支持正确Unicode的图表
我想在Python里创建一些简单的图表,比如饼图和柱状图。
我试过了CairoPlot
和pycha
这两个库。它们看起来都很不错,但似乎不能正确处理Unicode字符。
CairoPlot.pie_plot(name='test.png', width=800, height=600,
data={'eins':100, 'zwei':48, 'drei':90, 'vier':98,u'fünf':187})
结果显示为fünf
,而不是fünf
。
有没有简单易用的模块,能够很好地支持Unicode?或者你们有没有让CairoPlot
或pycha
正确显示Unicode字符的方法?
我更喜欢自己解决,所以不想用谷歌图表。
编辑
ironfroggy的回答让我尝试了这个
CairoPlot.pie_plot(name='test.png', width=800, height=600,
data={'eins':100, 'zwei':48, 'drei':90, 'vier':98,'f\xc3\xbcnf':187})
这个有效。
有没有安全的方法可以把Unicode字符串转换成ASCII字符串,同时把非ASCII字符转义?
编辑 2
u'fünf'.encode('latin-1')
这个方法有效。谢谢!
编辑 3
对于pycha,它的效果也是一样的
dataSet = (
('dataSet 1', ((0, 1), (1, 3), (2, 2.5))),
('dataSet 2', ((0, 2), (1, 4), (2, 3))),
(u'dataSet Ü'.encode('latin-1'), ((0, 5), (1, 1), (2, 0.5))),
)
chart = pycha.bar.VerticalBarChart(surface)
chart.addDataset(dataSet)
chart.render()
surface.write_to_png('output.png')
2 个回答
1
试着使用一个第三方库来替换那些乱七八糟的Unicode字符,如果你需要,我很乐意在专业咨询时给你推荐一个。
1
在你的代码里直接使用非ASCII字符时要小心。你有没有在代码里加上编码提示呢?
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
当然,你确定你的编辑器是按照你想的那种编码正确保存文件的吗?最保险的做法还是把代码保持在ASCII格式,然后用转义的非ASCII字符来写Unicode字符串(比如用\UXXXX,其中XXXX是你的字符编码)。