在不同的绘图行上绘制 Pandas Dataframe 中的列的简单方法?
Posted
技术标签:
【中文标题】在不同的绘图行上绘制 Pandas Dataframe 中的列的简单方法?【英文标题】:Simple Method to Plot Columns in Pandas Dataframe on Different rows of plot? 【发布时间】:2019-03-23 21:16:16 【问题描述】:是否有一种简单的方法可以使用共享的 X 轴在不同的行/图块上绘制所有列?我不想深入研究每个新图形的 matplotlib 子图;我正在寻找一些简单的东西,可以让我轻松查看数据框中的所有数据。我觉得 Pandas 或 Seaborn 中缺少一个简单的标志或选项。
pandas 中的一个简单 dataframe.plot() 将所有变量堆叠起来:
我想要一种简单的方法(不是很多行的 matplotlib 图形构建),它为数据框中的每个变量(列)创建一个新方面,具有单独的 Y 轴,但共享 X 轴。
也许我在 ggplot2 中忽略了一些东西?
目标 - 类似这样:
【问题讨论】:
您可以发布您的 DataFrame 以供我们复制吗? 【参考方案1】:像这样?
df.plot(subplots=True, layout=(4,1))
它似乎完全生成了你想要的。
如果你想让标签在情节之外,你可以在df.plot之后做一些处理:
fig = plt.figure(figsize=(14,8))
ax = fig.add_subplot(111)
df = pd.DataFrame(np.random.uniform(size=(20,4)))
df.plot(ax=ax, subplots=True, layout=(4,1)) # ax=ax points df.plot to fig
for each in fig.axes: # You can still modify these axes!
each.legend(loc='center left', bbox_to_anchor=(1, 0.5))
这会将图例之外的图例设置在右侧,过程与设置任何其他图例相同。
【讨论】:
@EHB 这是文档非常糟糕的 pandas 函数的扩展版本(带有代码示例!):pandas.pydata.org/pandas-docs/stable/visualization.html 作为类似的后续行动 - 您是否找到了一个很好的解决方案,可以将图例放在情节之外而无需诉诸基本级别的 matplotlib 操作? 太棒了!!已经阅读了很多答案非常复杂的SO帖子。你应该在那些上回答这个!非常感谢。 似乎无法使用上述方法调用plt.tight_layout()
。还有什么办法可以防止图例中的标签被切断(更长的标签)?
@EHB 我以前尝试过tight_layout
,但即使在普通的场地上它也从未对我有用。我现在试着远离它......你可以修复你的ax
职位允许更多空间显示标签而不使用tight_layout
以上是关于在不同的绘图行上绘制 Pandas Dataframe 中的列的简单方法?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 pandas DataFrame 绘图函数绘制每个子图的 ylabel
Python图形绘制:如何用Matplotlib和pandas绘图?