如何为Matplotlib柱状图添加X轴与Y轴刻度标记
给图表添加X/Y轴刻度标记的实现方法
你的代码默认已经显示了X/Y轴刻度,但如果需要自定义刻度的位置、标签或范围,可以通过plt.xticks()和plt.yticks()实现,以下是具体操作:
1. 自定义X轴刻度
如果你想手动指定X轴显示哪些索引(避免1000个刻度过于密集),可以直接指定刻度位置和对应的标签:
# 选择要显示的行位置(比如第0、200、400...个数据点) custom_x_positions = [0, 200, 400, 600, 800, 999] # 使用原数据的索引作为刻度标签 custom_x_labels = result1.index[custom_x_positions] # 设置X轴刻度 plt.xticks(ticks=custom_x_positions, labels=custom_x_labels, rotation=0, fontsize=60)
2. 自定义Y轴刻度
如果需要固定Y轴的刻度范围和间隔,比如从0到0.4,每0.05一个刻度:
import numpy as np # 需要先导入numpy plt.yticks(ticks=np.arange(0, 0.41, 0.05), fontsize=60)
修改后的完整代码(含中文注释)
import pandas as pd import matplotlib.pyplot as plt import numpy as np # 提取实际数据并重命名列 comparison1 = testing_data_points_unscaled[["Climate change (kg CO2 eq.)"]] PL_new1 = comparison1.rename(columns={"Climate change (kg CO2 eq.)": "实际气候变化(反归一化)(kg CO2 eq.)"}) k1 = PL_new1.head(1000) # 提取预测数据 comparison2 = prediction_DE_normalized["Predicted Climate change (De-normalized) (kg CO2 eq.)"] kk1 = comparison2.head(1000) # 合并实际与预测数据 result1 = pd.concat([k1, kk1], axis=1) # 可选:将预测列名改为中文 result1 = result1.rename(columns={"Predicted Climate change (De-normalized) (kg CO2 eq.)": "预测气候变化(反归一化)(kg CO2 eq.)"}) # 设置绘图样式和尺寸 plt.style.use('seaborn-deep') plt.rcParams["figure.figsize"] = (90, 35) # 绘制柱状图 plotdata = pd.DataFrame(result1) plotdata.plot(kind="bar") # 设置图例 plt.legend(loc=0, prop={'size': 50}) # 设置标题与轴标签 plt.title("实际 vs 预测气候变化", fontsize=70) plt.xlabel("索引", fontsize=50) plt.ylabel("kg CO2 eq.", fontsize=50, labelpad=40) # labelpad增加标签与刻度的间距 # 自定义X轴刻度 custom_x_positions = [0, 200, 400, 600, 800, 999] custom_x_labels = result1.index[custom_x_positions] plt.xticks(ticks=custom_x_positions, labels=custom_x_labels, rotation=0, fontsize=60) # 自定义Y轴刻度 plt.yticks(ticks=np.arange(0, 0.41, 0.05), fontsize=60) # 调整刻度样式 plt.tick_params(labelsize=60) plt.grid(False) # 隐藏右侧和顶部边框 ax = plt.gca() ax.spines["right"].set_visible(False) ax.spines["top"].set_visible(False) ax.yaxis.offsetText.set_fontsize(50) # 显示图表 plt.show()
注意事项
- 如果不需要自定义刻度,保留原代码中的
plt.xticks(rotation=0)和plt.tick_params(labelsize=60)即可,matplotlib会自动根据数据生成默认刻度。 - 若图表刻度显示异常,可能是因为
figure.figsize设置过大导致刻度挤压,可以适当调整宽高比例。
内容的提问来源于stack exchange,提问作者user20155022
相关产品推荐
相关产品推荐

