matplotlib 绘制双轴子图时 x 轴标签不显示的排查与解决
本文针对 matplotlib 在绘制包含双坐标轴的子图时出现 x 轴标签无法显示的问题进行分析。通过对比仅使用双轴、仅使用子图以及两者结合的代码示例,指出特定版本环境下 subplot2grid 与 twinx 组合可能存在的渲染冲突。文章提供了复现该问题的代码结构,并建议检查 Anaconda 版本差异,为遇到类似绘图异常的用户提供参考方案。
问题概述
问题概述
背景介绍
背景介绍
环境差异与复现
正如标题所述,在使用 matplotlib 绘制带有双坐标轴的子图时,x 轴的坐标轴标签无法正常显示。这似乎与“双轴”和“子图”同时使用存在某种冲突。当前测试环境为 anaconda 3.7.4。值得注意的是,在我个人的电脑上,使用 3.7.3 版本时并未出现此问题。然而,将公司电脑的 anaconda 版本降级至 3.7.3 后,该问题依然存在,导致调试陷入困境。
双轴子图代码示例
import pandas as pd
import matplotlib.pyplot as plt
a = pd.date_range('2020-07-01','2020-07-20')
b = [2,3,4,5,7,9,20,20,11,13,1,2,3,9,23,2,6,7,7,7]
c = [0.20,0.1,0.13,0.1,0.2,0.3,0.9,0.23,0.2,0.6,0.7,0.7,0.7,0.2,0.3,0.4,0.5,0.7,0.9,0.2]
data = pd.DataFrame({'a':a,'b':b,'c':c})
data = data.groupby(['a'])['b','c'].sum()
nrow = 2
ncol = 1
fig = plt.figure(figsize=(ncol*10,nrow*4))
ax_1 = plt.subplot2grid((nrow, ncol), (0, 0), colspan=1, rowspan=1,facecolor = 'black')
ax_2 = plt.subplot2grid((nrow, ncol), (1, 0), colspan=1, rowspan=1,facecolor = 'black')
data['b'].plot(ax = ax_1,color = 'r')
data['c'].plot(ax = ax_1.twinx(),color = 'y')

单独绘制双轴的情况
单独绘制双轴的情况
仅双轴代码示例
import pandas as pd
import matplotlib.pyplot as plt
a = pd.date_range('2020-07-01','2020-07-20')
b = [2,3,4,5,7,9,20,20,11,13,1,2,3,9,23,2,6,7,7,7]
c = [0.20,0.1,0.13,0.1,0.2,0.3,0.9,0.23,0.2,0.6,0.7,0.7,0.7,0.2,0.3,0.4,0.5,0.7,0.9,0.2]
data = pd.DataFrame({'a':a,'b':b,'c':c})
data = data.groupby(['a'])['b','c'].sum()
nrow = 1
ncol = 1
fig = plt.figure(figsize=(ncol*10,nrow*4))
ax_1 = plt.subplot2grid((nrow, ncol), (0, 0), colspan=1, rowspan=1,facecolor = 'black')
# ax_2 = plt.subplot2grid((nrow, ncol), (1, 0), colspan=1, rowspan=1,facecolor = 'black')
data['b'].plot(ax = ax_1,color = 'r')
data['c'].plot(ax = ax_1.twinx(),color = 'y')

仅绘制子图的情况
仅绘制子图的情况
仅子图代码示例
import pandas as pd
import matplotlib.pyplot as plt
a = pd.date_range('2020-07-01','2020-07-20')
b = [2,3,4,5,7,9,20,20,11,13,1,2,3,9,23,2,6,7,7,7]
c = [0.20,0.1,0.13,0.1,0.2,0.3,0.9,0.23,0.2,0.6,0.7,0.7,0.7,0.2,0.3,0.4,0.5,0.7,0.9,0.2]
data = pd.DataFrame({'a':a,'b':b,'c':c})
data = data.groupby(['a'])['b','c'].sum()
nrow = 2
ncol = 1
fig = plt.figure(figsize=(ncol*10,nrow*4))
ax_1 = plt.subplot2grid((nrow, ncol), (0, 0), colspan=1, rowspan=1,facecolor = 'black')
ax_2 = plt.subplot2grid((nrow, ncol), (1, 0), colspan=1, rowspan=1,facecolor = 'black')
data['b'].plot(ax = ax_1,color = 'r')
data['c'].plot(ax = ax_2,color = 'y')

总结
以上就是关于 matplotlib 在绘制双轴子图时 x 轴不显示问题的简要分析。如需了解更多关于 matplotlib 双轴子图的相关技巧,可查阅本站历史文章或继续阅读后续内容。感谢大家的支持!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













