我需要更改散点图的分隔符的大小。我需要比较绘图,它们应该都是相同的大小,即从相同的点开始,以相同的大小结束。
plt.scatter(x, y)
plt.show()
另一个情节是
plt.scatter(x, y)
plt.show()
我希望他们的比例相同
答案 0 :(得分:1)
您需要绘制彼此共享x轴和y轴的图形。在下面的示例中,x
有100个数据点,范围从0到100,而y
有150个数据点,范围从0到50.
x = np.random.randint(0,100, size=100)
y = np.random.randint(0,50, size=150)
fig = plt.figure()
ax1 = fig.add_subplot(121)
ax2 = fig.add_subplot(122, sharey=ax1, sharex=ax1)
#ax2 = ax1.twiny()
ax1.scatter(range(100),x)
ax2.scatter(range(150),y, color='darkorange')
plt.show()
您还可以为x
和y
轴定义显式限制。
yaxis_min, yaxis_max = (min(x.min(), y.min()), max(x.max(), y.max()))
xaxis_max = max(len(x), len(y))
然后你可以单独绘制它们:
plt.scatter(range(len(x)),x)
plt.xlim([xaxis_min, xaxis_max])
plt.ylim([yaxis_min, yaxis_max])
plt.show()
输出:
同样适用于另一个变量:
plt.scatter(range(len(y)),y, color='darkorange')
plt.xlim([xaxis_min, xaxis_max])
plt.ylim([yaxis_min, yaxis_max])
plt.show()
输出:
答案 1 :(得分:1)
版本1:子图
如果以子图的形式进行,则可以共享轴,因此它们具有相同的比例(轴的比例)。这是一个例子:
x=np.random.random((2,20))
>>> x[1,:]*=5
>>> x
array([[0.61385822, 0.06513556, 0.38509674, 0.88475931, 0.61135633,
0.52850788, 0.28874746, 0.31957553, 0.56352545, 0.73032793,
0.33251703, 0.46145744, 0.85718266, 0.9245014 , 0.82680079,
0.64086966, 0.34268507, 0.16287025, 0.75205862, 0.83800607],
[2.33122874, 0.85485611, 3.22991163, 3.49787662, 4.15323232,
2.3525812 , 3.42487024, 2.88836999, 4.6458569 , 3.0970779 ,
1.11708794, 1.43842651, 3.21363567, 0.22537731, 4.30038695,
2.18049717, 2.41325285, 4.75072423, 1.66524457, 3.714594 ]])
>>> y=np.random.random((2,20))
>>> y
array([[0.56533792, 0.08718218, 0.44651916, 0.71774735, 0.97279402,
0.55520593, 0.65698023, 0.74630129, 0.02921527, 0.0346008 ,
0.16860719, 0.4033271 , 0.65322063, 0.07031113, 0.11294362,
0.01561782, 0.46711258, 0.95043895, 0.41240197, 0.48960332],
[0.13080883, 0.74344444, 0.42144694, 0.19517648, 0.40808507,
0.73776604, 0.16057131, 0.78187482, 0.47684809, 0.7813126 ,
0.02526416, 0.5067928 , 0.94726587, 0.76381176, 0.06206742,
0.34659303, 0.28615481, 0.93999695, 0.37723651, 0.63998848]])
>>> ax=plt.subplot(121)
>>> plt.scatter(x[0,:],x[1,:])
<matplotlib.collections.PathCollection object at 0x7f84a1e72950>
>>> plt.subplot(122,sharex=ax,sharey=ax)
<matplotlib.axes._subplots.AxesSubplot object at 0x7f84a1e72f50>
>>> plt.scatter(y[0,:],y[1,:])
<matplotlib.collections.PathCollection object at 0x7f84a1dfaa50>
>>> plt.show()
版本2:按比例缩放的独立图表
但是,如果您需要具有相同比例的独立图形,则可以请求每个图形的ymin,ymax xmin,xmax并将其设置回来。像这样:
plt.scatter(x[0,:],x[1,:])
<matplotlib.collections.PathCollection object at 0x7f84a0dd3ed0>
>>> xmin,xmax = plt.xlim()
>>> ymin,ymax = plt.ylim()
>>> plt.show()
>>> plt.scatter(y[0,:],y[1,:])
<matplotlib.collections.PathCollection object at 0x7f84a0d09410>
>>> plt.xlim(xmin,xmax)
(0.015514037327494477, 0.9741229215679024)
>>> plt.ylim(ymin,ymax)
(-0.00981860392769604, 4.985920150990175)
>>> plt.show()