在matplotlib中为每个子图饼图添加网格线

bxgwgixi  于 2022-11-30  发布在  其他
关注(0)|答案(1)|浏览(122)

我有一个二维数组,其中有8个子数组。我想在饼图中绘制每个数组,如下所示:

fig, axes = plt.subplots(4, 2,figsize=(15, 15))

axes[0,0].pie(counts_list[0])
axes[0,1].pie(counts_list[1])

axes[1,0].pie(counts_list[2])
axes[1,1].pie(counts_list[3])

axes[2,0].pie(counts_list[4])
axes[2,1].pie(counts_list[5])

axes[3,0].pie(counts_list[6])
axes[3,1].pie(counts_list[7])

plt.show()

我用这段代码实现了什么:

现在我已经尝试了SO和互联网上所有可能的答案解决方案,添加了像axes[0][0].grid()这样的网格,添加了

plt.rcParams['axes.grid'] = True

但是由于某种原因,网格线没有出现在饼图上。我该如何解决这个问题?
任何正确方向的指导都是感激的。谢谢。另外如果需要数组的代码,请在评论中让我知道。
我已经绘制了实际的饼图,只需要添加网格线和配色方案。

xxslljrj

xxslljrj1#

以下方法应该有效:

from matplotlib import pyplot as plt

fig, ax = plt.subplots()

data = [32, 45, 67, 12, 1]

ax.pie(data)

# turn on frame
ax.set_frame_on(b=True)

# create locations of grid points
xrange = ax.get_xlim()
ngrids = 7
dx = (xrange[1] - xrange[0]) / ngrids
gridvals = [xrange[0] + (dx / 2) + i * dx for i in range(ngrids)]

# set grid location
ax.set_yticks(gridvals, minor=False)
ax.set_xticks(gridvals, minor=False)

# set tick labels (to be from 1 to 7)
ax.set_xticklabels([f"{i}" for i in range(1, ngrids + 1)])
ax.set_yticklabels([f"{i}" for i in range(1, ngrids + 1)])

# turn grid on
ax.yaxis.grid(True, which="major")
ax.xaxis.grid(True, which="major")

若要使用Blues色彩Map表,请参阅此处的范例。

相关问题