【发布时间】:2020-05-02 20:19:41
【问题描述】:
我正在尝试将 PIE 图表和 Treemap 添加为子图。 如下所示(预期):-
根据squarify documentation,我试图将轴对象作为 ax 参数传递。但是它不起作用。在传递轴对象时,第二个图是空的。
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.mlab as mlab
import matplotlib.gridspec as gridspec
import squarify
# Fixing random state for reproducibility
np.random.seed(19680801)
dt = 0.01
t = np.arange(0, 10, dt)
nse = np.random.randn(len(t))
r = np.exp(-t / 0.05)
cnse = np.convolve(nse, r) * dt
cnse = cnse[:len(t)]
s = 0.1 * np.sin(2 * np.pi * t) + cnse
fig, (ax0, ax1) = plt.subplots(ncols=2, constrained_layout=True)
fig.set_figheight(7)
fig.set_figwidth(13)
#plt.subplot(211)
# Pie chart, where the slices will be ordered and plotted counter-clockwise:
labels = ['Frogs', 'Hogs']
sizes = [15, 30]
explode = (0, 0.1) # only "explode" the 2nd slice (i.e. 'Hogs')
ax0.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%',
shadow=True, startangle=90)
#plt.subplot(212)
#ax1.psd(s, 512, 1 / dt)
plt.show()
volume = [350, 220, 170, 150, 50]
labels = ['Liquid\n volume: 350k', 'Savoury\n volume: 220k', 'Sugar\n volume: 170k',
'Frozen\n volume: 150k', 'Non-food\n volume: 50k']
color_list = ['#0f7216', '#b2790c', '#ffe9a3', '#f9d4d4', '#d35158', '#ea3033']
plt.rc('font', size=14)
squarify.plot(sizes=volume, label=labels,
color=color_list, alpha=0.7)
plt.axis('off')
plt.show()
【问题讨论】:
-
当你执行
plt.show()时,matplotlib 会显示绘图,当绘图关闭时它会立即被擦除。因此,您可能希望删除对plt.plot的第一次调用。此外,您可能希望在对squarify.plot(..., ax=ax1)的调用中添加ax=ax1 -
@JohanC 你是对的。 plt.show() 是问题所在。还要感谢您从我不知道 show() 的事实中增强我的知识;
-
其实发帖前只有我加了。但是正如您正确指出的那样, show() 方法是罪魁祸首
标签: python matplotlib data-visualization pie-chart treemap