如何在Matplotlib 3D图中设置z轴刻度的字体类型
解决Matplotlib 3D图z轴刻度字体设置问题
报错原因很直接:matplotlib.pyplot 没有 zticks() 这个函数——plt.xticks()/plt.yticks() 是针对2D坐标轴的快捷API,3D图的z轴需要通过Axes3D实例来操作。
以下是两种可行的解决方法:
方法1:使用tick_params()统一设置
先创建3D坐标轴实例,再通过tick_params()分别指定各轴的字体:
import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D # 创建3D绘图对象 fig = plt.figure() ax = fig.add_subplot(projection='3d') # 绘制你的3D图形(示例:散点图) ax.scatter([1,2,3], [4,5,6], [7,8,9]) # 设置三个轴的刻度字体为Times New Roman ax.tick_params(axis='x', fontfamily='Times New Roman') ax.tick_params(axis='y', fontfamily='Times New Roman') ax.tick_params(axis='z', fontfamily='Times New Roman') plt.show()
方法2:通过轴对象直接修改刻度标签
获取z轴的刻度后,用set_zticklabels()指定字体:
import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() ax = fig.add_subplot(projection='3d') ax.scatter([1,2,3], [4,5,6], [7,8,9]) # 获取当前z轴刻度值,再设置字体 z_ticks = ax.get_zticks() ax.set_zticklabels(z_ticks, fontproperties='Times New Roman') # 同时设置x、y轴(也可以用这种方式) x_ticks = ax.get_xticks() ax.set_xticklabels(x_ticks, fontproperties='Times New Roman') y_ticks = ax.get_yticks() ax.set_yticklabels(y_ticks, fontproperties='Times New Roman') plt.show()
如果需要连轴标签(xlabel/ylabel/zlabel)也统一字体,可以补充:
ax.set_xlabel('X Axis', fontproperties='Times New Roman') ax.set_ylabel('Y Axis', fontproperties='Times New Roman') ax.set_zlabel('Z Axis', fontproperties='Times New Roman')
内容的提问来源于stack exchange,提问作者Manfred L
相关产品推荐
相关产品推荐

