Scatterplot Marker Size与轴值成比例 - 为什么x和y轴的像素数对于aspect ='equal'是不同的?

时间:2016-11-05 22:04:42

标签: python matplotlib size scatter-plot markers

我的问题就是我认为与this post密切相关。

我需要绘制一些标记大小严格与轴值成比例的数据。 (已经问过问题here)。

我的方法如下:

  • 为像素参考创建空散点图
  • 在左下角和右上角分散2个点
  • 将轴限制为这两个点
  • 使用transData.transform获取这两个点的像素值
  • 将像素距离作为这两个点的像素数的差异
  • (现在我有距离像素比,用我的数据分散我的数据 s=(size*dist_to_pix_ratio)**2;但现在这并不重要。)

问题是:当我完全按照我的描述进行操作时,我得到了y轴和x轴像素数的两个不同值。

这是一个最小的代码:

import matplotlib.pyplot as plt

fig = plt.figure(figsize=(7,7))
ax1 = fig.add_subplot(111, aspect='equal')

#setting up an empty scatterplot for pixel reference
xedges=[0.0, 1.0]
yedges=[0.0, 1.0]
emptyscatter=ax1.scatter(xedges, yedges, s=0.0)

#set axes limits
ax1.set_xlim(0.00,1.00)
ax1.set_ylim(0.00,1.00)   


# Calculating the ratio of pixel-to-unit
upright = ax1.transData.transform((1.0,1.0))
lowleft = ax1.transData.transform((0.0,0.0))
x_to_pix_ratio = upright[0] - lowleft[0]
y_to_pix_ratio = upright[1] - lowleft[1]

print x_to_pix_ratio, y_to_pix_ratio

返回:

434.0 448.0

有人可以解释为什么他们不平等吗?

我不确定它是否相关,但我使用的是Python 2.7.12和matplotlib 1.5.1

0 个答案:

没有答案