记录一下在使用pyecharts作图的时候遇到的一些问题。明明数字0是被当做标签(x)传入的,并不是数值(y)传入的,为什么会显示不了。百度了很久,也没有找到对应的解决方法。
代码如下(每个人的数据处理方式都不一样,贴下来只是供大家参考):
from pyecharts.charts import Pie
from pyecharts import options as opts #引入配置类
data2 = df['result'].value_counts()
# 把数据转换为列表形式
x_data = data2.keys().tolist()
y_data = data2.values.tolist()
#创建饼图对象
pie=Pie()
pie.add('',[list(dic) for dic in zip(x_data,y_data)])
#设置配置信息(标题)
pie.set_global_opts(title_opts=opts.TitleOpts(title='下载结果分布情形'),toolbox_opts=opts.ToolboxOpts(is_show=True),
legend_opts=opts.LegendOpts(orient='vertical',pos_top='5%',pos_left='2%'))#让标题呈现
# pie.set_series_opts(label_opts=opts.LabelOpts(formatter='{b}:{c}'))
pie.render_notebook()
得到结果如下图:
【原因】
在使用pyecharts生成饼图时,如果标签为数字0的图例显示不出来,可能是因为pyecharts默认会将数字0当作False处理,导致图例不显示。可以通过设置标签的类型为字符串来解决这个问题。
在原代码中查看x_data里面元素的类型,发现确实是int类型,不是字符串类型。如下图:
所以我们只需要将x_data列表中的元素都转换为str类型即可。
x_data = [str(x) for x in x_data]
整体代码如下:
data2 = df['result'].value_counts()
# 把数据转换为列表形式
x_data = data2.keys().tolist()
x_data = [str(x) for x in x_data]
y_data = data2.values.tolist()
#创建饼图对象
pie=Pie()
pie.add('',[list(dic) for dic in zip(x_data,y_data)])
#设置配置信息(标题)
pie.set_global_opts(title_opts=opts.TitleOpts(title='下载结果分布情形'),toolbox_opts=opts.ToolboxOpts(is_show=True),
legend_opts=opts.LegendOpts(orient='vertical',pos_top='5%',pos_left='2%'))#让标题呈现
# pie.set_series_opts(label_opts=opts.LabelOpts(formatter='{b}:{c}'))
pie.render_notebook()
修改后,成功显示: