【问题标题】:Matplotlib subplot Background color not applying to the last graph in seriesMatplotlib subplot 背景颜色不适用于系列中的最后一个图
【发布时间】:2021-01-17 13:34:35
【问题描述】:

我正在尝试在 matplotlib 中为我的子图 set_facecolor() 并且由于某种原因,这些属性永远不会适用于最后一个图,因此没有类似的问题,因此不得不为此发布问题。我的 Python 代码是(我几周前才开始用 Python 编码,因此请原谅我效率低下的代码,先尝试解决问题)-

import matplotlib.pyplot as plt
import pandas as pd
import matplotlib.dates as mdates
import numpy as np
city = 'Mumbai'
df = pd.read_excel (r'filename')
gg = df[df['City']==city]
x = gg['Date']
y1 = gg['Parks']
y2 = gg['Transit']
y3 = gg['Workplaces']
y4 = gg['Residential']
y5 = gg['Retail']
y6 = gg['Grocery']
fig,a =  plt.subplots(1,6,squeeze=False,figsize=(18,3),sharey=True)
fig.tight_layout(pad=0)
plt.box(on=None)
y = ""
plt.yticks(np.arange(-100, 101, 50))
a[0][0].set_ylim(top=50, bottom = -100)
plt.tight_layout()
plt.subplots_adjust(wspace = 0.033)
for i in range(0,6):
    a[0][i].xaxis.set_major_locator(mdates.MonthLocator())
    a[0][i].xaxis.set_major_formatter(mdates.DateFormatter("%b"))
    a[0][i].spines["top"].set_visible(False)
    a[0][i].spines["right"].set_visible(False)
    a[0][i].spines["bottom"].set_visible(False)
    a[0][i].spines["left"].set_visible(False)
    a[0][i].hlines(0,min(x), max(x),color='black', linewidth=0.5)
    a[0][i].set_facecolor('lightgrey')  
    #a[0][i].axes.get_xaxis().set_visible(False)
    if(i!=0):
        a[0][i].tick_params(left = False)
a[0][0].plot(x,y1)
a[0][1].plot(x,y2)
a[0][2].plot(x,y3)
a[0][3].plot(x,y4)
a[0][4].plot(x,y5)
a[0][5].plot(x,y6)

plt.show()

如您所见,最后一个图的背景颜色不是“浅灰色”。

【问题讨论】:

    标签: python matplotlib background-color subplot


    【解决方案1】:

    只需在a[0][i].set_facecolor('lightgrey') 前面添加a[0][i].set_frame_on(True)(后面也可以)。

    【讨论】:

      猜你喜欢
      • 2021-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多