【问题标题】:How do create a scale for a second axis without unnecessary (or redundant) plotting?如何在没有不必要(或冗余)绘图的情况下为第二个轴创建比例?
【发布时间】:2014-12-10 23:53:57
【问题描述】:

我有一个图,其中我已经绘制了我的所有数据和一个“缠绕”轴,我想在这个轴上使用另一个比例,在这种情况下是日期。我还有一个与我的数据的每个元素对应的所有日期的列表,并且想为缠绕轴添加一个日期刻度。

例如,我有

ax2 = ax1.twinx()

并列出了x_temporal_datay_day_offsetsy_dates,长度都一样,并且已经用

绘制了前两者的关系
ax1.plot(x_temporal_data, y_day_offsets)

只想在ax2 上为y_dates 中的日期设置一个刻度,因为y_day_offsetsy_dates 是相同时间信息的“同义词”。

有没有办法做到这一点,而无需“绘制”我不需要显示的东西(因为我的所有数据都已经绘制好了)。例如,我可以让日期完美地出现在ax2

ax2.plot(len(y_dates)*[some_random_out_of_xrange_value], y_dates)

但这似乎是一个 hack:不绘制任何东西来“校准”第二个轴。

有没有更好、更惯用的方法来实现这一点?

【问题讨论】:

    标签: matplotlib plot axes


    【解决方案1】:

    只需根据自己的喜好设置第二个 y 轴上的比例:

    ax2.set_ylim([min(y_dates), max(y_dates)])
    

    【讨论】:

    • 呃!我的错。我试过这个,但是使用[y_dates[0], y_dates[-1]] 并且虽然y_dates 是有序的,但类型(datetimenumpy.array)导致结果出现异常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 2017-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多