Python之PyChart画图方法
其实,Python绘图的方式很多,也有很多开源不错的模块可以选择,比如常用于科学计算的Matplotlib、Cairoplot(需要×××)、Chaco、Python Google Chart、PyCha、pyOFC2、PyChart、PLplot、ReportLab、VPython等等。
这里,我们介绍下PyChart模块,其绘图还是比较方便的,而且绘出的图像也还不错。我们除了需要安装PyChart模块之外,还需要安装Ghostscript和GSview,为了方便大家,这里提供51cto的下载地址:
PyChart:http://down.51cto.com/data/391104
Ghostscript:http://down.51cto.com/data/391088
GSview:http://down.51cto.com/data/391100
OK,安装完之后,看一个简单的示例代码:
# http://flykite.blog.51cto.com/
from pychart import *
class zap_y_coord(linear_coord.T):
def get_canvas_pos(self, size, val, min, max):
if val <= 70:
return linear_coord.T.get_canvas_pos(self, size, val, 0, 110)
elif val <= 240:
return linear_coord.T.get_canvas_pos(self, size, 70, 0, 110)
else:
return linear_coord.T.get_canvas_pos(self, size, val - 170, 0, 110)
def get_tics(self, min, max, interval):
tics = linear_coord.T.get_tics(self, min, max, interval)
return [x for x in tics if x < 65 or x > 256]
# can = canvas.default_canvas()
can = canvas.init('flykite.png')
theme.scale_factor=3
theme.use_color=True
theme.reinitialize()
data = [(10, 20, 30, 5), (20, 265, 33, 5),
(30, 255, 30, 5), (40, 45, 51, 7), (50, 25, 27, 3)]
chart_object.set_defaults(area.T, size = (150, 120), y_range = (0, 280),
y_coord = zap_y_coord(),
x_coord = category_coord.T(data, 0))
chart_object.set_defaults(bar_plot.T, data = data)
bar_plot.fill_styles.reset();
plot1=bar_plot.T(label="foo", cluster=(0,3))
plot2=bar_plot.T(label="bar", hcol=2, cluster=(1,3))
plot3=bar_plot.T(label="baz", hcol=3, cluster=(2,3))
ar = area.T(loc=(250,0),
x_axis=axis.X(label="X label", format="/a-30{}%d"),
y_axis=axis.Y(label="Y label", tic_interval=10))
ar.add_plot(plot1, plot2, plot3)
ar.draw()
for x in (ar.x_pos(10) - 20, ar.x_pos(20)- 10, ar.x_pos(30) - 10):
zap.zap_horizontally(can, line_style.default, fill_style.white,
x, ar.y_pos(65), x+16, ar.y_pos(65) + 4, 4, 4)
为了生成png图片,使用以下命令运行程序:
python flykite.py --format=png
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341