【问题标题】:plot horizontal line in all subplots在所有子图中绘制水平线
【发布时间】:2018-05-29 19:17:50
【问题描述】:

我正在使用 python 并找到了几个解决方案来做到这一点。但它需要创建每个单独的子图。但是因为有一个参数可以让你做subplot=True,我想知道有没有办法在一行代码中做到这一点......你可以说sharey=True,你能不能让它“分享”一个水平常数?

我一直在玩它。起初,它只显示在最后一张图上,但现在根本不显示。

import matplotlib.pyplot as plt

line_up_points.plot(subplots=True, layout=(3, 3),sharey=True, figsize=(18, 12))
plt.legend(loc='best')
plt.axhline(y=125.08, color='r')

这是显示的内容:

但我想在 y=125.08 处的每个子图上都有一条水平线

如果不单独创建 7 个不同的图表,有什么想法吗?

【问题讨论】:

    标签: python plot subplot


    【解决方案1】:

    如果我没记错的话,你应该得到一个轴对象矩阵。

    这应该可以解决问题:

    axes = line_up_points.plot(subplots=True, layout=(3, 3),sharey=True, figsize=(18, 12))
    
    for c in axes:
       for ax in c:
          ax.axhline(y=125.08, color='r')
    

    这是一个完整的例子:

    %matplotlib inline  # For Jupyter Notebooks
    import numpy as np
    import pandas as pd
    
    df = pd.DataFrame(np.random.rand(10, 7))
    
    axes = df.plot(subplots=True, layout=(3, 3), figsize=(16,9))
    
    for c in axes:
        for ax in c:
            ax.axhline(y=0.5, color='r')
    

    【讨论】:

    • 忽略我之前的评论。我抓住了小编辑。工作完美
    • @chitown88 是的,那是我的错误。它只返回轴,但不返回图形对象。我更新了我的答案。