实际上,您的代码是正确的,Waffle正确显示了您的数据(缩放图表以查看方块...)
但是,要实现所需的输出,您需要调整“行”和“列”参数,这些参数指定了您的华夫饼图的尺寸。
nRows=5
countsPerBlock=10
plt.figure(FigureClass=Waffle,
rows=nRows,
columns=int(np.ceil(sum(dic.values())/nRows/countsPerBlock)),
values=dic,
legend={'loc': 'upper left', 'bbox_to_anchor': (1, 1.1)})
plt.show()
![Screenshot solution 2](https://istack.dev59.com/TOozc.webp)
请注意,华夫饼干内部应用了一些舍入(参见参数
rounding_rule
),因此除非您自己调整数据的比例,否则
countsPerBlock
不是完全准确的。要精确地重现所需的输出,请使用以下代码:
nRows = 5
countsPerBlock = 10
keys = ['Xemay', 'Xedap', 'Oto', 'Maybay', 'Tauthuy', 'Xelua']
vals = np.array([150, 20, 180, 80, 135, 5])
vals = np.ceil(vals/countsPerBlock)
data = dict(zip(keys, vals))
plt.figure(FigureClass=Waffle,
rows=5,
values=data,
legend={'loc': 'upper left', 'bbox_to_anchor': (1, 1)})
plt.show()
![Screenshot solution final](https://istack.dev59.com/1Q2hD.webp)
或者,您可以将数据标准化,使值的总和为100。在一个5x20的方格中,一个方格将代表您数据的1%。
keys = ['Xemay', 'Xedap', 'Oto', 'Maybay', 'Tauthuy', 'Xelua']
vals = np.array([150, 20, 180, 80, 135, 5])
vals = vals/vals.sum()*100
data = dict(zip(keys, vals))
nRows = 5
![Screenshot solution final](https://istack.dev59.com/c8Xe8.webp)
PyWaffle
创建图表?如果你明确包含导入包的话,可以帮助人们回答问题。 - Robert King