【发布时间】:2020-11-14 11:35:38
【问题描述】:
我有两个不同的情节,第一个是Frequency vs Features,另一个是Frequency vs Yield Loss。
每个图都是一个条形图,带有一条趋势线,在 Y 轴的右侧显示累积百分比或收益率损失。
因此,对于每个图表,X 轴显示特征名称,左侧 Y 轴显示频率,右侧 Y 轴显示累积百分比或收益率损失。
这是我编写的代码,它显示了以下输出。
#Trendline_change_2
import matplotlib.pyplot as plt
fig, ax1 = plt.subplots()
ax1 = df.iloc[:HOW_MANY,:]['FailCount'].plot(kind="bar",stacked = True,legend=False,figsize=(8,8), label = 'frequency plot',color = 'green',title="Frequency of failure vs Feature") #Graph naming changes
ax1.set_ylabel('Frequency', color='b')
ax1.tick_params('y', colors='b')
ax1.set_xticklabels(np.asarray(df['Feature'])[:HOW_MANY])
ax2 = ax1.twinx()
ax2.plot(np.asarray(df['Cummulative_aggr'])[:HOW_MANY],linestyle='--', marker='s',label ='cummulative %', color='r')
ax2.set_ylabel('Cummulative %', color='r')
plt.legend(loc='best')
#Plot 2
fig, ax1 = plt.subplots()
ax1 = df.iloc[:HOW_MANY,:]['FailCount'].plot(kind="bar",stacked = True,legend=False,figsize=(8,8), label = 'frequency plot',color = 'green',title="Frequency of failure vs Feature") #Graph naming changes
ax1.set_ylabel('Frequency', color='b')
ax1.tick_params('y', colors='b')
ax1.set_xticklabels(np.asarray(df['Feature'])[:HOW_MANY])
ax2 = ax1.twinx()
ax2.plot(np.asarray(df['Yield_Loss'])[:HOW_MANY],linestyle='--', marker='s',label ='Yield Loss', color='black')
ax2.set_ylabel('Yield Loss', color='black')
plt.legend(loc='best')
plt.tight_layout()
plt.show()
一切都很好除了我想并排更改两个地块而不是另一个地块。
我尝试了一些方法来将它们并排设置,例如 plt.subplot(1,2,1) 和其他参数,但结果并不令人满意。
谁能帮我调整一下?我知道我很接近,但无法做到正确。
【问题讨论】:
-
您的代码将创建两个数字。为什么您的示例输出显示子图?您是否在像 Jupyter 或类似环境中工作,内联绘图让您认为您有一个图形的两个子图?
-
@Mr.T 嗨。实际上我想要两个像我附上的图像一样的数字。只希望它们比一个低于另一个相邻。你也是对的,我确实在使用 Jupyter notebook。
-
现在变得混乱了。 matplotlib 中的图形是与子图不同的实体。您可以在一个图中有多个子图,您可以在 matplotlib 中安排这些子图。或者您可以在每个图中有一个子图 - 但要排列这些图,您必须指示控制输出的程序,在您的情况下似乎是 Jupyter。这两个问题(“如何在 matplotlib 中排列子图”和“如何在 Jupyter 中排列图形”)是不同的,因为答案会有所不同。那么,你有哪个问题?我添加了标签
Jupyter,以防是第二个问题。 -
@Mr.T 如果让我感到困惑,我很抱歉。让我简单地说,我希望两个子图并排排列。累积百分比和收益率损失之一。为了获得累积百分比图,我从#Trendline_change_2 编码到#plot 标签,对于下图,代码从#plot 2 开始。在每个图中,我有一个条形图,左轴为频率,一个显示趋势的线和带有右 Y 轴的地图。这对于两个地块都是一样的。我希望我没有用错术语。
标签: python pandas matplotlib jupyter