如何将 axhline 发送到 Matplotlib 的条形图后面

nev*_*int 6 python matplotlib pandas

我有以下代码。它在 Pandas 中使用Matplotlib 包装器

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")
Run Code Online (Sandbox Code Playgroud)

它使这个数字:

在此处输入图片说明

正如那里所说。我怎样才能axhline把背景变成背景?我试过了,zorder但不起作用。

tmd*_*son 11

你只需要做zorderbarplot比更高zorderaxhline。在您的示例中,我只需将选项添加zorder=2barplot = 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()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明