/+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: Gustav Hartvigsson
  • Date: 2011-01-03 21:57:12 UTC
  • Revision ID: gustav.hartvigsson@gmail.com-20110103215712-1yeiw9tl7oiwh8w1
forgot the the the images in the examples folder...

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
"""
2
18
 
3
19
import os
4
20
import sys
7
23
ROOT = os.path.dirname(os.path.abspath(__file__))
8
24
sys.path.insert(0, os.path.join(ROOT, '..'))
9
25
 
 
26
from pygooglechart import Chart
10
27
from pygooglechart import SimpleLineChart
11
28
from pygooglechart import XYLineChart
 
29
from pygooglechart import SparkLineChart
 
30
from pygooglechart import Axis
12
31
 
13
32
import settings
14
33
import helper
15
34
 
16
35
def simple_random():
17
 
    chart = SimpleLineChart(settings.width, settings.height)
 
36
    chart = SimpleLineChart(settings.width, settings.height, y_range=(0, 100))
18
37
    chart.add_data(helper.random_data())
19
38
    chart.download('line-simple-random.png')
20
39
 
21
40
def xy_random():
22
 
    chart = XYLineChart(settings.width, settings.height)
 
41
    chart = XYLineChart(settings.width, settings.height,
 
42
                        x_range=(0, 100), y_range=(0, 100))
23
43
    chart.add_data(helper.random_data())
24
44
    chart.add_data(helper.random_data())
25
45
    chart.download('line-xy-random.png')
26
46
 
27
47
def xy_rect():
28
 
    chart = XYLineChart(settings.width, settings.height)
 
48
    chart = XYLineChart(settings.width, settings.height,
 
49
                        x_range=(0, 100), y_range=(0, 100))
29
50
    chart.add_data([10, 90, 90, 10, 10])
30
51
    chart.add_data([10, 10, 90, 90, 10])
31
52
    chart.download('line-xy-rect.png')
32
53
 
33
54
def xy_circle():
34
 
    chart = XYLineChart(settings.width, settings.height)
 
55
    chart = XYLineChart(settings.width, settings.height,
 
56
                        x_range=(0, 100), y_range=(0, 100))
35
57
    steps = 40
36
58
    xradius = 25
37
59
    yradius = 45
39
61
    ymid = 50
40
62
    xlist = []
41
63
    ylist = []
42
 
    for angle in xrange(0, steps + 1):
 
64
    for angle in range(0, steps + 1):
43
65
        angle = float(angle) / steps * math.pi * 2
44
66
        xlist.append(math.cos(angle) * xradius + xmid)
45
67
        ylist.append(math.sin(angle) * yradius + ymid)
47
69
    chart.add_data(ylist)
48
70
    chart.download('line-xy-circle.png')
49
71
 
 
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
 
50
153
def main():
51
154
    simple_random()
52
155
    xy_random()
53
156
    xy_rect()
54
157
    xy_circle()
 
158
    sparklines()
 
159
    fill()
 
160
    stripes()
55
161
 
56
162
if __name__ == '__main__':
57
163
    main()