2016-05-24 6 views
0

Ich habe den folgenden Code. Es verwendet Matplotlib wrapper in Pandas:Wie man axhline nach hinten von Matplotlibs barplot sendet

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") 

Und es macht diese Zahl:

enter image description here

Wie dort angegeben. Wie kann ich die axhline in den Hintergrund stellen? Ich versuchte zorder, aber wird nicht funktionieren.

Antwort

3

Sie müssen nur die zorder der barplot höher als die zorder der axhline machen. In Ihrem Beispiel musste ich nur die Option zorder=2 zum barplot = toplot_df.plot() Aufruf hinzufügen.

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

Verwandte Themen