pandas 在 matplotlib 子图中添加一行

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/42534449/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-14 03:06:29  来源:igfitidea点击:

add a line to matplotlib subplots

python-3.xpandasmatplotliblegendsubplot

提问by Nabla

I would like to do a subplot of two figures with matplotlib and add a horizontal line in both. This is probably basic, but I don't know how to specify that one of the lines should be drawn in the first figure, they both end up in the last one. e.g.

我想用 matplotlib 绘制两个图形的子图,并在两者中添加一条水平线。这可能是基本的,但我不知道如何指定应在第一个图中绘制其中一条线,它们最终都在最后一个图中。例如

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

s1= pd.Series(np.random.rand(10))
s2= pd.Series(np.random.rand(10))

fig, axes = plt.subplots(nrows=2,ncols=1)

f1= s1.plot(ax=axes[0])
l1=plt.axhline(0.5,color='black',ls='--')
l1.set_label('l1')

f2= s1.plot(ax=axes[1])
l2=plt.axhline(0.7,color='red',ls='--') 
l2.set_label('l2')

plt.legend()

subplot with horizontal lines

带水平线的子图

axhline does not have "ax" as an argument, as the pandas plot function does. So this would work:

axhline 没有“ax”作为参数,就像 pandas plot 函数那样。所以这会起作用:

l1=plt.axhline(0.5,color='black',ls='--',ax=axes[0])

I read the examplesin matplotlib and I tried with this other option that does not work either (probably for good reasons)

我阅读matplotlib 中的示例,并尝试了另一个不起作用的选项(可能有充分的理由)

axes[0].plt.axhline(0.5,color='black',ls='--')

How should I do to draw lines in subplots? Ideally with a legend Thanks!

我应该如何在子图中画线?最好有传说 谢谢!

采纳答案by Nabla

with the help of @Nick Becker I answered my own "syntax" question.

在@Nick Becker 的帮助下,我回答了我自己的“语法”问题。

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline


s1= pd.Series(np.random.rand(10))
s2= pd.Series(np.random.randn(10))

fig, axes = plt.subplots(nrows=2,ncols=1)

f1= s1.plot(ax=axes[0],label='s1')
l1=axes[0].axhline(0.5,color='black',ls='--')
l1.set_label('l1')

axes[0].legend(loc='best')

f2= s1.plot(ax=axes[1],label='s2')

l2=axes[1].axhline(0.5,color='black',ls='--')

l2.set_label('l2')

axes[1].legend(loc='best')

subplots with horizontal lines

带有水平线的子图