我想要一个SQUARED散点图和每个图4个子图。我想通了,该怎么办,如果x和y轴具有相同的范围:matplotlib/python:强制轴对于多个子图的长度相同
f, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2)
for x in [ax1, ax2, ax3, ax4]:
x.set_adjustable('box-forced')
x.set_aspect('equal')
但是,如果x和y轴有不同的范围,这并不工作,因为在X的一个单元得到相同的作为y中一个单位的情节的长度。
我已经看到使用plt.subplots_adjust()来改变轴的长度,但我不明白如果我已经有多个子图,这是如何工作的。
任何想法?我很惊讶设置图形大小的容易程度,以及设置坐标轴长度的难度。
谢谢!
编辑: 下面是一些代码,显示了问题:
import matplotlib.pyplot as plt
import numpy as np
f, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2)
# All data within 0-25, 25-50, 50-75, 75-100 should be plotted on respective subplot
layers = [(ax4, (0., 25.)), (ax3, (25., 50.)), (ax2, (50.., 75.)), (ax1, (75., 100.))]
# make subplot squared:
for x in layers:
x[0].set_adjustable('box-forced')
x[0].set_aspect('equal')
# loop over multiple files containing data, here reproduced by creating a random number 100 times:
for x in np.arange(100):
data = np.random.random(10)*100.
for pl in layers:
ii = np.where((data>=pl[1][0]) & (pl[1][1]>data))[0]
pl[0].scatter(data[ii], data[ii])
plt.show()
这产生具有方形副区的曲线图: 平方副区(x轴和y轴具有相同的范围)1
使用与上面的完全相同的代码,但绘制数据[ii]与(数据[ii])** 2给出了具有x和y的不同轴范围并且改变平方形状的绘图:
x和y具有不同的t取值和情节受到压缩2
我想获得地块1的形状和情节的数据2.
谢谢!
你可以提供一个[MCVE]这说明它是如何不工作,然后用这个,确切地解释剧情应该怎么样子的呢? (在这个描述中,重点关注你想达到的结果,而不是你认为可能的解决方案)。 – ImportanceOfBeingErnest