2016-05-24 25 views
0

我有以下代码。它采用Matplotlib wrapper in Pandas如何将axhline发送到Matplotlib的barplot背面

import pandas as pd 
import io 
import matplotlib 
import matplotlib.pyplot as plt 

test=u"""Cell,Value 
Bcells,0.056304 
DendriticCells,0.3155388 
Macrophages,0.131430 
""" 

tableau10=[ "#17BECF", "#BCBD22", "#7F7F7F", ] 

toplot_df = pd.read_csv(io.StringIO(test)) 
toplot_df.set_index('Cell',inplace=True) 
xlabels = toplot_df.index.values 
barplot = toplot_df.plot(kind="bar", figsize=(17,17), \ 
          color = tableau10, \ 
          width=0.7,\ 
          fontsize = 30,\ 
          legend=False, 
          ylim = (0,0.5), 
          subplots=False) 

ax = plt.gca() 
ax.set_xticklabels(xlabels, rotation=30, ha='right') 

# How to to make this to the back 
plt.axhline(y=0.1, linewidth=1, color='r',zorder=1) 
plt.xlabel("") 
plt.ylabel("Score", fontsize=30, fontweight="bold") 

它使这个数字:

enter image description here

如前所述那里。我怎样才能使axhline为背景? 我试过zorder但无效。

回答

3

您只需要使barplotzorder高于axhlinezorder即可。在您的示例中,我只需将选项zorder=2添加到barplot = toplot_df.plot()调用。

import pandas as pd 
import io 
import matplotlib 
import matplotlib.pyplot as plt 

test=u"""Cell,Value 
Bcells,0.056304 
DendriticCells,0.3155388 
Macrophages,0.131430 
""" 

tableau10=[ "#17BECF", "#BCBD22", "#7F7F7F", ] 

toplot_df = pd.read_csv(io.StringIO(test)) 
toplot_df.set_index('Cell',inplace=True) 
xlabels = toplot_df.index.values 
barplot = toplot_df.plot(kind="bar", figsize=(17,17), \ 
          color = tableau10, \ 
          width=0.7,\ 
          fontsize = 30,\ 
          legend=False, 
          ylim = (0,0.5), 
          subplots=False, 
          zorder=2)       ##### This is all I added 

ax = plt.gca() 
ax.set_xticklabels(xlabels, rotation=30, ha='right') 

# How to to make this to the back 
plt.axhline(y=0.1, linewidth=1, color='r',zorder=1) 
plt.xlabel("") 
plt.ylabel("Score", fontsize=30, fontweight="bold") 

plt.show() 

enter image description here

相关问题