matplotlib 绘制双轴子图时 x 轴标签不显示的排查与解决

江屿
江屿
发布时间:2026-10-14 | 6人浏览过
原创

本文针对 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 双轴子图的相关技巧,可查阅本站历史文章或继续阅读后续内容。感谢大家的支持!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表