如何使用Matplotlib的pyplot旋转图表坐标轴与图像?
在Matplotlib中旋转坐标轴及生成旋转后的散点图
针对你的需求,我整理了几种常见的实现方式,你可以根据具体想要的效果来选择:
1. 旋转坐标轴刻度标签
如果只是想让X轴或Y轴的数值标签旋转一定角度(比如避免标签重叠、提升可读性),可以使用plt.xticks()和plt.yticks()的rotation参数来设置旋转角度。修改你的代码如下:
import matplotlib.pyplot as plt import numpy as np x1 = [0, 0.02, 0.04, 0.08, 0.12, 0.16, 0.2] y1 = [0.0005, 0.052, 0.0905, 0.1675, 0.2485, 0.3225, 0.4035] plt.scatter(x1, y1) plt.title("y-x scatter") plt.xlabel("x") plt.ylabel("y") # 将X轴刻度标签旋转45度,你可以调整rotation的值来改变角度 plt.xticks(rotation=45) # 同理,旋转Y轴刻度标签 plt.yticks(rotation=90) plt.show()
2. 生成旋转90度的图表(交换XY轴)
如果你的目标是让整个图表旋转90度展示,最直接的方式就是在绘制散点图时交换X和Y数据的位置,同时记得更新轴标签和标题:
import matplotlib.pyplot as plt import numpy as np x1 = [0, 0.02, 0.04, 0.08, 0.12, 0.16, 0.2] y1 = [0.0005, 0.052, 0.0905, 0.1675, 0.2485, 0.3225, 0.4035] # 交换x1和y1的位置,实现图表旋转90度的效果 plt.scatter(y1, x1) plt.title("x-y scatter (rotated 90°)") plt.xlabel("y") plt.ylabel("x") plt.show()
3. 进阶:旋转整个坐标系至任意角度
如果需要将图表旋转非90度的任意角度,可以借助Matplotlib的Affine2D变换来实现,示例代码如下:
import matplotlib.pyplot as plt import numpy as np from matplotlib.transforms import Affine2D x1 = [0, 0.02, 0.04, 0.08, 0.12, 0.16, 0.2] y1 = [0.0005, 0.052, 0.0905, 0.1675, 0.2485, 0.3225, 0.4035] fig, ax = plt.subplots() # 创建旋转变换,rotate_deg的参数为顺时针旋转角度 rotation_transform = Affine2D().rotate_deg(30) + ax.transData ax.scatter(x1, y1, transform=rotation_transform) ax.set_title("Scatter plot rotated 30°") ax.set_xlabel("x") ax.set_ylabel("y") plt.show()
根据你的实际需求选对应的方法就可以啦~
内容的提问来源于stack exchange,提问作者boyden
相关产品推荐
相关产品推荐

