python - 如何在条形下方绘制网格线以及在所有内容之上绘制线条和线条
问题描述
我有一个线和条形图,并且无法以正确的顺序绘制事物。我想要所有东西后面的网格线,接下来是条形,以及所有东西上面的线条。以下是我尝试过的。我想尝试#3 最接近,但网格线位于条形顶部:
import os, sys
import matplotlib.pyplot as plt
dtnums = [1,2,3,4,5]
pop = [20,25,75,32,5]
obs = [0.0, 0.0, 0.21, 0.30, 0.10]
fig, ax1 = plt.subplots( figsize=(8,5) )
ax2 = ax1.twinx()
#--- Try #1
ax1.plot(dtnums, pop, color='blue', linewidth=3)
ax1.grid(True, axis='y')
ax2.bar(dtnums, obs, color='g')
plt.show()
#--- Try #2
ax1.plot(dtnums, pop, color='blue', linewidth=3, zorder=10)
ax1.grid(True, axis='y',zorder=0)
ax2.bar(dtnums, obs, color='g', zorder=1)
plt.show()
#--- Try #3
ax1.plot(dtnums, pop, color='blue', linewidth=3, zorder=2)
ax1.grid(True, axis='y',zorder=0)
ax2.bar(dtnums, obs, color='g', zorder=1)
ax1.set_axisbelow(True)
ax1.set_zorder(10)
ax1.patch.set_visible(False)
plt.show()
解决方案
import matplotlib.pyplot as plt
dtnums = [1,2,3,4,5]
pop = [20,25,75,32,5]
obs = [0.0, 0.0, 0.21, 0.30, 0.10]
fig, ax1 = plt.subplots(figsize=(8, 5))
ax2 = ax1.twinx()
# add this
ax2.set_axisbelow(True)
ax1.plot(dtnums, pop, color='blue', linewidth=3, zorder=2)
# change this from ax1 to ax2
ax2.grid(True, axis='y', zorder=0)
ax2.bar(dtnums, obs, color='g', zorder=1)
ax1.set_axisbelow(True)
ax1.set_zorder(10)
ax1.patch.set_visible(False)
plt.show()
推荐阅读
- javascript - 如何使用按钮停止和继续功能?
- haskell - 是 ha 句柄还是 lambda 函数(或两者)?
- azure - 如何在 Azure Maps 中绘制圆形路径?
- java - 我的 Connect Four 游戏在运行时返回完整
- php - 使用密钥在 Swift 应用程序和 MySQL 数据库之间建立安全连接?
- python - Python 3:根据缓冲将二进制文件写入标准输出
- php - laravel-query-grouByMonth-groupByYear-sumdata
- java - Mockito:如何对 void 方法 java mockito 进行单元测试?
- anypoint-studio - 全局函数在预览中有效,但在运行代码时失败
- c# - 为什么 WslApi 在 WPF 应用程序中突然停止工作