簡體   English   中英

更改特定子圖的背景顏色(餅圖外部)

[英]change specific subplot background color (outside of pie chart)

我有以下帶有餅圖的子圖,由下面的代碼輸出。

子圖中的三個餅圖

我想以不同的顏色為奇數子圖的背景(僅上圖中的中間陰影)着色,但是我無法使其工作。

我看了幾個地方,從這個問題的幾個答案中,我都嘗試了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()

默認情況下,餅圖的完整軸為“ off”。 您可以使用frame參數將其設置為on。

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])並使用較小的圓餅半徑,例如radius=.27

在此處輸入圖片說明

完整的復制代碼

 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() 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM