~uhh-ssd/+junk/humidity_readout

« back to all changes in this revision

Viewing changes to plplot/plplot-5.9.9/examples/perl/x11.pl

  • Committer: Joachim Erfle
  • Date: 2013-07-24 13:53:41 UTC
  • Revision ID: joachim.erfle@desy.de-20130724135341-1qojpp701zsn009p
initial commit

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#! /usr/bin/env perl
 
2
#
 
3
# Demo x11 for the PLplot PDL binding
 
4
#
 
5
# Mesh plot demo
 
6
#
 
7
# Copyright (C) 2004  Rafael Laboissiere
 
8
#
 
9
# This file is part of PLplot.
 
10
#
 
11
# PLplot is free software; you can redistribute it and/or modify
 
12
# it under the terms of the GNU Library General Public License as published
 
13
# by the Free Software Foundation; either version 2 of the License, or
 
14
# (at your option) any later version.
 
15
#
 
16
# PLplot is distributed in the hope that it will be useful,
 
17
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 
18
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
19
# GNU Library General Public License for more details.
 
20
#
 
21
# You should have received a copy of the GNU Library General Public License
 
22
# along with PLplot; if not, write to the Free Software
 
23
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
24
 
 
25
# SYNC: x11c.c 1.24
 
26
 
 
27
use PDL;
 
28
use PDL::Graphics::PLplot;
 
29
 
 
30
use constant XPTS => 35;    # Data points in x
 
31
use constant YPTS => 46;    # Data points in y
 
32
use constant LEVELS => 10;
 
33
 
 
34
@opt = (DRAW_LINEXY, DRAW_LINEXY);
 
35
 
 
36
@alt = (33.0, 17.0);
 
37
@az = (24.0, 115.0);
 
38
 
 
39
@title = (
 
40
  "#frPLplot Example 11 - Alt=33, Az=24, Opt=3",
 
41
  "#frPLplot Example 11 - Alt=17, Az=115, Opt=3"
 
42
);
 
43
 
 
44
sub cmap1_init {
 
45
 
 
46
  my $i = pdl [0.0,    # left boundary
 
47
               1.0];   # right boundary
 
48
 
 
49
  my $h = pdl [240,    # blue -> green -> yellow ->
 
50
               0];     # -> red
 
51
 
 
52
  my $l = pdl [0.6, 0.6];
 
53
 
 
54
  my $s = pdl [0.8, 0.8];
 
55
 
 
56
  plscmap1n (256);
 
57
  plscmap1l(0, $i, $h, $l, $s, pdl ([]));
 
58
}
 
59
 
 
60
# main
 
61
#
 
62
# Does a series of mesh plots for a given data set, with different
 
63
# viewing options in each plot.
 
64
 
 
65
my $nlevel = LEVELS;
 
66
 
 
67
# Parse and process command line arguments
 
68
 
 
69
plParseOpts (\@ARGV, PL_PARSE_SKIP | PL_PARSE_NOPROGRAM);
 
70
 
 
71
# Initialize plplot
 
72
 
 
73
plinit ();
 
74
 
 
75
$z = zeroes (XPTS, YPTS);
 
76
 
 
77
my $x = 3 * (sequence (XPTS) - int(XPTS / 2)) / int(XPTS / 2);
 
78
my $y = 3 * (sequence (YPTS) - int(YPTS / 2)) / int(YPTS / 2);
 
79
 
 
80
# The code below may be vectorized to improve speed
 
81
for (my $i = 0; $i < XPTS; $i++) {
 
82
  my $xx = $x->index ($i);
 
83
  for (my $j = 0; $j < YPTS; $j++) {
 
84
    my $yy = $y->index ($j);
 
85
    $z->slice ("$i,$j") .=
 
86
      3. * (1.-$xx)*(1.-$xx) * exp(-($xx*$xx) - ($yy+1.)*($yy+1.)) -
 
87
      10. * ($xx/5. - pow($xx,3.) - pow($yy,5.)) * exp(-$xx*$xx-$yy*$yy) -
 
88
      1./3. * exp(-($xx+1)*($xx+1) - ($yy*$yy));
 
89
  }
 
90
}
 
91
 
 
92
$zmax = max ($z);
 
93
$zmin = min ($z);
 
94
$step = ($zmax - $zmin) / ($nlevel + 1);
 
95
$clevel = $zmin + $step + $step * sequence ($nlevel);
 
96
 
 
97
cmap1_init ();
 
98
for (my $k = 0; $k < 2; $k++) {
 
99
  for (my $i = 0; $i < 4; $i++) {
 
100
    pladv (0);
 
101
    plcol0 (1);
 
102
    plvpor (0.0, 1.0, 0.0, 0.9);
 
103
    plwind (-1.0, 1.0, -1.0, 1.5);
 
104
    plw3d (1.0, 1.0, 1.2, -3.0, 3.0, -3.0, 3.0, $zmin, $zmax,
 
105
           $alt[$k], $az[$k]);
 
106
    plbox3 (0.0, 0, 0.0, 0, 0.0, 4,
 
107
            "bnstu", "x axis", "bnstu", "y axis", "bcdmnstuv", "z axis");
 
108
 
 
109
    plcol0 (2);
 
110
 
 
111
    # wireframe plot
 
112
    if ($i == 0) {
 
113
      plmesh ($x, $y, $z, $opt[$k])
 
114
 
 
115
    # magnitude colored wireframe plot
 
116
    } elsif ($i == 1) {
 
117
      plmesh ($x, $y, $z,$opt[$k] | MAG_COLOR);
 
118
 
 
119
    # magnitude colored wireframe plot with sides
 
120
    } elsif ($i == 2) {
 
121
      plot3d ($x, $y, $z, $opt[$k] | MAG_COLOR, 1);
 
122
 
 
123
    # magnitude colored wireframe plot with base contour
 
124
    } elsif ($i == 3) {
 
125
      plmeshc ($x, $y, $z, $opt[$k] | MAG_COLOR | BASE_CONT, $clevel);
 
126
    }
 
127
 
 
128
    plcol0 (3);
 
129
    plmtex (1.0, 0.5, 0.5, "t", $title[$k]);
 
130
  }
 
131
}
 
132
 
 
133
plend();