【问题标题】:How do I plot two Pandas Series on a single plot figure?如何在一个绘图图形上绘制两个 Pandas 系列?
【发布时间】:2018-10-28 03:41:49
【问题描述】:

我有两个具有相同索引的系列,需要将它们的值绘制在同一个图上,每个图都为线图。

fig, axs = plt.subplots()
sns.lineplot(numkdhh_pmf.index, numkdhh_pmf.values, ax = axs, color = 'r')
sns.lineplot(biased.index, biased.values, ax = axs, color = 'b')
plt.show()

这仅显示后一个情节,以第二个写的为准。关于为什么这两个图都拒绝在图中显示的任何想法?

两个系列的值在相似的范围内,所以这不是缩放问题。

编辑

省略无花果时,这两个图显示了根据以下代码设置的 axs。我仍然不确定为什么,因为我对 Seaborn/matplotlib 没有透彻的了解。代码确实是从 Jupyter 运行的,但它总是在同一个单元格中。谢谢大家的帮助。

ax2 = sns.lineplot(biased.index, biased.values, color = 'r')
sns.lineplot(numkdhh_pmf.index, numkdhh_pmf.values, ax = ax2, color = 'b')
plt.show()

【问题讨论】:

  • 你能把一个简单的例子和​​两个重现问题的小例子系列放在一起吗? IE。 minimal reproducible example.
  • @JohnZwinck 你的骗子是我对这个问题的第一反应,但如果你仔细看看,你会发现这是关于对 seaborn 的独立调用,应该使用相同的数字。欺骗的替代方案将产生两个数字,而在这种情况下,只有一个数字,其中一个图丢失了。
  • Alex,如果您在第一次通话中覆盖 axs = sns.lineplot(...),有什么变化吗?我认为这不是必需的,但 lineplot 的文档不祥地说“返回 Axes 对象并在其上绘制绘图”。
  • Andras,此更改有效,但前提是 fig, axs = plt.subplots() 被删除,如我的编辑所示。我不知道为什么,但谢谢!
  • 是的,这很奇怪 :) 但只要它有效......!没问题。

标签: python matplotlib seaborn


【解决方案1】:

虽然您的代码对我来说可以正常工作,但您可以尝试另一种选择。 sns.lineplot 返回一个轴实例(我们称之为ax1),您可以将其传递给第二个线图。我选择了一些假数据来提供答案。

data = np.random.random((10))
ax1 = sns.lineplot(data, data, ax = axs, color = 'r')
sns.lineplot(data+0.5, data+0.8, ax = ax1, color = 'b')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-08
    • 1970-01-01
    • 2015-01-10
    • 1970-01-01
    • 1970-01-01
    • 2020-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多