use*_*148 18 python matplotlib rotation figure
我在matplotlib中创建了一个图形,其中包含三个子图,一个在左上象限,一个在右上象限,一个在右下象限.右上图包含一个二维图像,另外两个图分别是Y轴和X轴上的投影.我想将左上象限子图逆时针旋转90度,使得该图的x轴位于2-d图的y轴上.
对于子图,我意识到我可以翻转x和y数据,旋转轴标签,在左侧创建一个情节标题,等等.但我希望找到一个单独的调用,它可以旋转整个完成的绘图通过90deg.但我找不到一个.
有一个简单的方法吗?
小智 11
许多pyplot 1D图似乎在他们自己的参数中有"方向"或"枢轴"选项.例如,从matplotlib.org直方图的例子:
matplotlib.pyplot.hist(x,
bins=10,
range=None,
normed=False,
weights=None,
cumulative=False,
bottom=None,
histtype=u'bar',
align=u'mid',
orientation=u'vertical',
rwidth=None,
log=False,
color=None,
label=None,
stacked=False,
hold=None,
**kwargs)
Run Code Online (Sandbox Code Playgroud)
只需改为水平(orientation=u'vertical'
)
许多函数的另一个有趣的参数是transform
(不同orientation
或者pivot
此参数也可以用于例如plot
).
该transform
参数允许您添加由Transform
对象指定的转换.为了举例,这是你如何旋转一些随机数据的图:
import numpy
from matplotlib import pyplot, transforms
data = numpy.random.randn(100)
# first of all, the base transformation of the data points is needed
base = pyplot.gca().transData
rot = transforms.Affine2D().rotate_deg(90)
# define transformed line
line = pyplot.plot(data, 'r--', transform= rot + base)
# or alternatively, use:
# line.set_transform(rot + base)
pyplot.show()
Run Code Online (Sandbox Code Playgroud)
有关如何旋转补丁的示例,请参阅此答案,这也是此答案的灵感来源.
我最近发现transform
使用pyplot.scatter
(和其他PathCollections
)时参数不能按预期工作.在这种情况下,您可能想要使用offset_transform
.有关如何设置的更多信息,请参阅此答案offset_transform
.
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
fig=plt.figure()
ax=fig.add_subplot(111,projection='3d')
# for rotate the axes and update.
for angle in range(0,360):
ax.view_init(30,angle)
plt.show()
Run Code Online (Sandbox Code Playgroud)