gpt4 book ai didi

python - Matplotlib:条形图上方的网格线

转载 作者:太空狗 更新时间:2023-10-30 01:37:01 27 4
gpt4 key购买 nike

这是一个简单的代码,可以重现我试图绘制的那种图形:

import matplotlib.pyplot as plt
import seaborn as sb
import numpy as np

x = np.arange(1,11)
y1 = x[::-1]
y2 = 2 ** x

fig = plt.figure(figsize = (8,6))
ax1 = fig.add_subplot(111)
plt.bar(x, y1, 1, color = 'blue')
ax1.grid(axis = 'y')
ax2 = ax1.twinx()
ax2.plot(x+0.5, y2, color = 'red')

产生:

Plot image

最后一个线图中的网格线出现在条形图上方。我怎样才能把他们关进 jail ?

最佳答案

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(1,11)
y1 = x[::-1]
y2 = 2 ** x

fig = plt.figure(figsize = (8,6))
ax1 = fig.add_subplot(111)
ax2 = ax1.twinx()

# from back to front
ax1.grid(axis="both", color="black")
ax1.bar(x, y1, 1, alpha=.9, edgecolor="black", facecolor='blue', zorder=1)

ax2.grid(axis="y", color="green")
#ax2.grid(False)
ax2.plot(x+0.5, y2, color='red')

plt.show()

生成下图,说明元素的 zorder。

ax1.grid => ax1.bar => ax2.grid => ax2.line

zorder of elements in plot

我能想到的唯一解决方法是在 ax1 中绘制网格并关闭 ax2 网格(如果您真的想为 ax2 绘制水平网格线,那么您可能必须使用 ax1 绘制该线。

ax1.grid(True, axis="both", color="yellow")
ax1.bar(x, y1, 1, alpha=.9, edgecolor="black", facecolor='blue', zorder=1)

ax2.grid(False)
ax2.plot(x+0.5, y2, color='red')

some workaround

关于python - Matplotlib:条形图上方的网格线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42006944/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com