如何在熊猫图中为每条线绘制水平线?

时间:2018-07-31 21:10:11

标签: pandas plot

我需要从下面绘制的每条线的第一个点开始绘制一条水平线。该行从第一个xticks到最后一个x-ticks。要使用ax.hlines(),我需要知道xmaxxmin,我不知道x值是否是分类值。如何绘制这些水平线(虚线为虚线)。

mydf = DataFrame( [[0.70, 0.79, 0.89, 0.76],
               [0.73, 0.79, 0.80, 0.67],
               [0.74, 0.70, 0.79, 0.87],
               [0.74, 0.60, 0.79, 0.7],
               [0.74, 0.79, 0.79, 0.7]])
mydf.columns = ['f1', 'f2','f3','f4']
mydf.index = ['a','b','c','d','e']
ax = mydf.plot()
ax.set_xticks(range(len(mydf.index)))
ax.set_xticklabels([item for item in mydf.index.tolist()])

enter image description here

2 个答案:

答案 0 :(得分:2)

您不需要遍历各列。您只需添加下面的线以绘制线条即可。

所有这些行的y参数都是起点。 mydf.iloc[0]xmin将始终为ax.get_lim()[0],而xmax将始终为ax.get_lim()[1]

有关更多信息,请参见docs

ax.hlines(mydf.iloc[0], ax.get_xticks().min(), ax.get_xticks().max(), linestyle='--', color='pink')

输出:

enter image description here

答案 1 :(得分:1)

使用:

mydf = pd.DataFrame( [[0.70, 0.79, 0.89, 0.76],
               [0.73, 0.79, 0.80, 0.67],
               [0.74, 0.70, 0.79, 0.87],
               [0.74, 0.60, 0.79, 0.7],
               [0.74, 0.79, 0.79, 0.7]])

mydf.columns = ['f1', 'f2','f3','f4']
mydf.index = ['a','b','c','d','e']

ax = mydf.plot()
ax.set_xticks(range(len(mydf.index)))
ax.set_xticklabels([item for item in mydf.index.tolist()])

for i in range(len(mydf.columns)):
    ax.axhline(y=mydf.iloc[0,i], xmin=.05, xmax=.95, ls='--', color='pink')

其中

  

xmin:标量,可选,默认值:0应介于0和1之间,0为   情节的最左边,情节的最右边是1。

     

xmax:标量,可选,默认值:1应介于0和1之间,0为   情节的最左边,情节的最右边是1。

enter image description here