首页 > 解决方案 > Python - Matplotlib 未在孪生图上显示任何轴标签

问题描述

我在该图上看不到任何标签,并且我为每个轴指定了标签。同样的事情发生在 x 轴显示为 0,2,4,而不是 0,1,2,3,4 等。作为参考 - 我在我的 PySimpleGUI 代码中使用它:

import matplotlib.pyplot as plt

data1= [0,1,2,3,4,5,6,7,8,9]
data2= [10,20,30,40,50,60,70,133,121,123]
data3=[100,324,121,432,232,543,332,543,534,122]
data4=[100,312,111,111,322,443,545,122,345,122]
#plt.style.use('dark_background')
title="my graph"
plt.figure(figsize=(8,5))
plt.style.use('ggplot')
plt.rcParams['axes.facecolor'] ='white'
plt.rcParams['font.size'] = '8'
plt.bar(data1,data2, color= 'blue' ,width=0.5,label="data2")
plt.twinx()
plt.plot(data1, data3, label="data 3 label")
plt.plot(data1, data4,label="data4",color='green')
plt.xlabel("my x axis label",fontsize =8)
plt.title(title,fontsize=8)
plt.tight_layout()
fig = plt.gcf()
print(fig)

在此处绘制示例 请有人能指出我正确的方向吗?

谢谢

标签: pythonpython-3.xmatplotlib

解决方案


使用面向对象的接口进行一些清理:

plt.style.use('ggplot')
plt.rcParams['axes.facecolor'] ='white'
plt.rcParams['font.size'] = '8'

fig, ax = plt.subplots(figsize=(8, 5))

ax.bar(data1,data2, color= 'blue' ,width=0.5,label="data2")

ax2 = ax.twinx()
ax2.plot(data1, data3, label="data 3 label")
ax2.plot(data1, data4,label="data4",color='green')

ax.set_xlabel("my x axis label",fontsize =8)
ax.set_xticks(data1)
ax.set_title(title,fontsize=8)

fig.tight_layout()

输出:

在此处输入图像描述

也许更好地MultipleLocator用于刻度位置(归功于@JohanC 的想法):

from matplotlib.ticker import MultipleLocator
...
ax.xaxis.set_major_locator(MultipleLocator(1))

推荐阅读