【问题标题】:autoscaling in matplotlib, plotting different time series in same chartmatplotlib 中的自动缩放,在同一图表中绘制不同的时间序列
【发布时间】:2014-06-14 19:15:49
【问题描述】:

我有一个“主”熊猫数据框,其中包含多个术语的“极性”值的时间序列。我想使用其中的 4 个,因此我提取了 4 个单独的数据帧,其中包含时间序列(所有术语的时间序列相同,但极性值不同。)

我使用下面的代码将它们绘制在 4 个单独的 matplotlib 图中

fig, axes = plt.subplots(nrows=2, ncols=2)
polarity_godzilla.plot(ax=axes[0,0]); axes[0,0].set_title('Godzilla')
polarity_henry_kissinger.plot(ax=axes[0,1]); axes[0,1].set_title('Henry Kissinger')
polarity_bmwi.plot(ax=axes[1,0]); axes[1,0].set_title('BMWi')
polarity_duran_duran.plot(ax=axes[1,1]); axes[1,1].set_title('Duran Duran')

现在,我想将它们全部绘制在同一张图中,这样我就知道了每个图的大小,因为 matplotlib 的自动缩放可以通过仅查看图表来给出关于大小的错误印象。

两个问题: 1)有没有办法在绘图时设置Y轴的最小值和最大值? 2)我不是matplotlib专家,所以我不确定如何使用不同的颜色、标记、标签等在同一个图中绘制4个变量。我试过nrows = 1,ncols = 1但不能绘制任何东西.

谢谢

【问题讨论】:

  • 你检查下面答案的方法了吗?

标签: python matplotlib plot pandas


【解决方案1】:

axes[i,j].set_ylim([min,max], auto=False) 将在i,jth 图中设置图的 y 限制。 auto=False 防止它破坏您的设置。

您可以通过调用plt.hold(True),绘制一堆图,然后调用plt.show()plt.savefig(filename),在同一个图形上绘制多条线。

您可以将颜色代码作为第三个位置参数传递给plt.plot()。语法有点拜占庭式(它继承自 MATLAB);它记录在matplotlib.pyplot.plot 文档中。您可以将此参数作为(例如)style='k--' 传递给DataFrame.plot

对于你的情况,我会尝试

fig, ax = plt.axes()
plt.hold(True)
polarity_godzilla.plot(ax=ax, style="k-o", label="Godzilla")
polarity_henry_kissinger(ax=ax, style="b-*", label="Kissinger")
#etc.
plt.legend()  #to draw a legend with the labels you provided
plt.show() #or plt.savefig(filename)

【讨论】:

    【解决方案2】:

    您也许可以循环进入您的 AxesSubplot 对象并通过 axis 参数调用 autoscale

    for ax in axes:
        ax.autoscale(axis='y')
    

    【讨论】:

    • 谢谢!这两个建议的组合/混合对我有用。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2017-10-08
    • 2014-12-01
    • 2018-11-19
    • 2012-11-16
    • 1970-01-01
    • 2015-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多