gpt4 book ai didi

python - 更改特定子图背景颜色(饼图之外)

转载 作者:行者123 更新时间:2023-12-01 02:07:01 25 4
gpt4 key购买 nike

我有以下带有饼图的子图,由下面的代码输出。

three pie charts in subplots

我想用不同的颜色对奇数子图的背景进行着色(仅上图中的中间一个),但我无法使其工作。

我查看了一些地方以及 this question 的一些答案我尝试了 ax.set_facecolor('red')ax.patch.set_facecolor('red'),但都没有产生替代的阴影/着色模式我'我正在寻找。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

n = 3

nums_df = pd.DataFrame([np.random.randint(1, 20, size=5) for _ in xrange(n)])

row_labels = ["row {:d}".format(i) for i in xrange(n)]

nums_df.index = row_labels

# create a figure with n subplots
fig, axes = plt.subplots(1, n)

# create pie charts
for i, ax in enumerate(axes):
ax.pie(nums_df.loc[row_labels[i]], labels=nums_df.loc[row_labels[i]])
ax.axis("equal")
if i%2 == 1:
ax.set_facecolor('red')
# ax.patch.set_facecolor('red')


plt.show()

最佳答案

默认情况下,饼图的完整轴处于“关闭”状态。您可以使用 frame 参数将其设置为打开。

ax.pie(..., frame=True)

这会在轴上产生刻度和刻度标签,因此,最好将其设置在外部,

ax.pie(..., frame=False)
ax.set_frame_on(True)

此外,您可能还想关闭刺,

for _, spine in ax.spines.items():
spine.set_visible(False)

或者,在一行中

plt.setp(ax.spines.values(),visible=False)

最后,为了使刻度标签不超过轴区域,可以固定轴范围,例如ax.axis([-1,1,-1,1]) 并使用较小的饼图半径,例如半径=.27

enter image description here

完整的复制代码

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

n = 3
nums_df = pd.DataFrame([np.random.randint(1, 20, size=5) for _ in xrange(n)])
row_labels = ["row {:d}".format(i) for i in xrange(n)]
nums_df.index = row_labels

fig, axes = plt.subplots(1, n)

for i, ax in enumerate(axes):
ax.pie(nums_df.loc[row_labels[i]], labels=nums_df.loc[row_labels[i]], frame=False, radius=0.27)
ax.set_frame_on(True)
ax.axis("equal")
ax.axis([-1,1,-1,1])
plt.setp(ax.spines.values(),visible=False)
if i%2 == 1:
ax.set_facecolor('red')

plt.show()

关于python - 更改特定子图背景颜色(饼图之外),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48958216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com