/+junk/pygooglechart-py3k

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/%2Bjunk/pygooglechart-py3k

« back to all changes in this revision

Viewing changes to examples/line.py

  • Committer: gak
  • Date: 2007-12-15 23:21:31 UTC
  • Revision ID: git-v1:857495549bac47c6a70872d4b36dd1fe49270357
version bump and MANIFEST fixes to allow examples and COPYING in the sdist

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
#!/usr/bin/env python
2
 
"""
3
 
Copyright Gerald Kaszuba 2008
4
 
 
5
 
This program is free software: you can redistribute it and/or modify
6
 
it under the terms of the GNU General Public License as published by
7
 
the Free Software Foundation, either version 3 of the License, or
8
 
(at your option) any later version.
9
 
 
10
 
This program is distributed in the hope that it will be useful,
11
 
but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 
GNU General Public License for more details.
14
 
 
15
 
You should have received a copy of the GNU General Public License
16
 
along with this program.  If not, see <http://www.gnu.org/licenses/>.
17
 
"""
18
2
 
19
3
import os
20
4
import sys
23
7
ROOT = os.path.dirname(os.path.abspath(__file__))
24
8
sys.path.insert(0, os.path.join(ROOT, '..'))
25
9
 
26
 
from pygooglechart import Chart
27
10
from pygooglechart import SimpleLineChart
28
11
from pygooglechart import XYLineChart
29
 
from pygooglechart import SparkLineChart
30
 
from pygooglechart import Axis
31
12
 
32
13
import settings
33
14
import helper
34
15
 
35
16
def simple_random():
36
 
    chart = SimpleLineChart(settings.width, settings.height, y_range=(0, 100))
 
17
    chart = SimpleLineChart(settings.width, settings.height)
37
18
    chart.add_data(helper.random_data())
38
19
    chart.download('line-simple-random.png')
39
20
 
40
21
def xy_random():
41
 
    chart = XYLineChart(settings.width, settings.height,
42
 
                        x_range=(0, 100), y_range=(0, 100))
 
22
    chart = XYLineChart(settings.width, settings.height)
43
23
    chart.add_data(helper.random_data())
44
24
    chart.add_data(helper.random_data())
45
25
    chart.download('line-xy-random.png')
46
26
 
47
27
def xy_rect():
48
 
    chart = XYLineChart(settings.width, settings.height,
49
 
                        x_range=(0, 100), y_range=(0, 100))
50
 
    chart.add_data([10, 90, 90, 10, 10])
51
 
    chart.add_data([10, 10, 90, 90, 10])
 
28
    chart = XYLineChart(settings.width, settings.height)
 
29
    chart.add_data([0, 100, 100, 0, 0])
 
30
    chart.add_data([0, 0, 100, 100, 0])
52
31
    chart.download('line-xy-rect.png')
53
32
 
54
33
def xy_circle():
55
 
    chart = XYLineChart(settings.width, settings.height,
56
 
                        x_range=(0, 100), y_range=(0, 100))
 
34
    chart = XYLineChart(settings.width, settings.height)
57
35
    steps = 40
58
36
    xradius = 25
59
37
    yradius = 45
61
39
    ymid = 50
62
40
    xlist = []
63
41
    ylist = []
64
 
    for angle in range(0, steps + 1):
 
42
    for angle in xrange(0, steps + 1):
65
43
        angle = float(angle) / steps * math.pi * 2
66
44
        xlist.append(math.cos(angle) * xradius + xmid)
67
45
        ylist.append(math.sin(angle) * yradius + ymid)
69
47
    chart.add_data(ylist)
70
48
    chart.download('line-xy-circle.png')
71
49
 
72
 
def sparklines():
73
 
    chart = SparkLineChart(settings.width, settings.height)
74
 
    chart.add_data(helper.random_data())
75
 
    chart.download('line-sparkline.png')
76
 
 
77
 
def fill():
78
 
 
79
 
    # Set the vertical range from 0 to 50
80
 
    max_y = 50
81
 
    chart = SimpleLineChart(200, 125, y_range=[0, max_y])
82
 
 
83
 
    # First value is the highest Y value. Two of them are needed to be
84
 
    # plottable.
85
 
    chart.add_data([max_y] * 2)
86
 
 
87
 
    # 3 sets of real data
88
 
    chart.add_data([28, 30, 31, 33, 35, 36, 42, 48, 43, 37, 32, 24, 28])
89
 
    chart.add_data([16, 18, 18, 21, 23, 23, 29, 36, 31, 25, 20, 12, 17])
90
 
    chart.add_data([7, 9, 9, 12, 14, 14, 20, 27, 21, 15, 10, 3, 7])
91
 
 
92
 
    # Last value is the lowest in the Y axis.
93
 
    chart.add_data([0] * 2)
94
 
 
95
 
    # Black lines
96
 
    chart.set_colours(['000000'] * 5)
97
 
 
98
 
    # Filled colours
99
 
    # from the top to the first real data
100
 
    chart.add_fill_range('76A4FB', 0, 1)
101
 
 
102
 
    # Between the 3 data values
103
 
    chart.add_fill_range('224499', 1, 2)
104
 
    chart.add_fill_range('FF0000', 2, 3)
105
 
 
106
 
    # from the last real data to the
107
 
    chart.add_fill_range('80C65A', 3, 4)
108
 
 
109
 
    # Some axis data
110
 
    chart.set_axis_labels(Axis.LEFT, ['', max_y / 2, max_y])
111
 
    chart.set_axis_labels(Axis.BOTTOM, ['Sep', 'Oct', 'Nov', 'Dec'])
112
 
 
113
 
    chart.download('line-fill.png')
114
 
 
115
 
def stripes():
116
 
    
117
 
    # Set the vertical range from 0 to 100
118
 
    max_y = 100
119
 
 
120
 
    # Chart size of 200x125 pixels and specifying the range for the Y axis
121
 
    chart = SimpleLineChart(200, 125, y_range=[0, max_y])
122
 
 
123
 
    # Add the chart data
124
 
    data = [
125
 
        32, 34, 34, 32, 34, 34, 32, 32, 32, 34, 34, 32, 29, 29, 34, 34, 34, 37,
126
 
        37, 39, 42, 47, 50, 54, 57, 60, 60, 60, 60, 60, 60, 60, 62, 62, 60, 55,
127
 
        55, 52, 47, 44, 44, 40, 40, 37, 34, 34, 32, 32, 32, 31, 32
128
 
    ]
129
 
    chart.add_data(data)
130
 
    
131
 
    # Set the line colour to blue
132
 
    chart.set_colours(['0000FF'])
133
 
 
134
 
    # Set the vertical stripes
135
 
    chart.fill_linear_stripes(Chart.CHART, 0, 'CCCCCC', 0.2, 'FFFFFF', 0.2)
136
 
 
137
 
    # Set the horizontal dotted lines
138
 
    chart.set_grid(0, 25, 5, 5)
139
 
 
140
 
    # The Y axis labels contains 0 to 100 skipping every 25, but remove the
141
 
    # first number because it's obvious and gets in the way of the first X
142
 
    # label.
143
 
    left_axis = range(0, max_y + 1, 25)
144
 
    #left_axis[0] = ''
145
 
    chart.set_axis_labels(Axis.LEFT, left_axis)
146
 
 
147
 
    # X axis labels
148
 
    chart.set_axis_labels(Axis.BOTTOM, \
149
 
        ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'])
150
 
 
151
 
    chart.download('line-stripes.png')
152
 
 
153
50
def main():
154
51
    simple_random()
155
52
    xy_random()
156
53
    xy_rect()
157
54
    xy_circle()
158
 
    sparklines()
159
 
    fill()
160
 
    stripes()
161
55
 
162
56
if __name__ == '__main__':
163
57
    main()