支持正确Unicode的图表

1 投票
2 回答
563 浏览
提问于 2025-04-15 14:31

我想在Python里创建一些简单的图表,比如饼图和柱状图。

我试过了CairoPlotpycha这两个库。它们看起来都很不错,但似乎不能正确处理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?或者你们有没有让CairoPlotpycha正确显示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是你的字符编码)。

撰写回答