2010-08-02 126 views
0

这是一个比matplotlib问题更重要的数学问题,但是如果有一种方法可以在matplotlib中做到这一点,那就太好了。如何在matplotlib/python中缩小y轴?

我有一组具有最大y值的点,min-y值可以有几百到几千之间的任何差异。

我想绘制这些点在y轴上的一个非常小的比例(可能是2个单位的跨度)。

例如,我有点(10,20)(11,123)(12,77)(13,124),我想绘制他们之间的0-2的y_values。我将如何缩小这个比例?无论是数学上的还是内置的matplotlib方式。

回答

1

你可以做一个简单的线性变换,对于所有的Y的:

ynew= 2*(y-ymin)/(ymax-ymin) 

分数(Y-YMIN)/(YMAX-YMIN)首先给你Y的比例协调的范围内,你感兴趣,然后从范围0-1到范围0-2,你只需乘以2.

+0

如果我的值是一堆增量,这会工作吗?所以我希望初始y_value以y = 1为中心,y = 0和y = 2之间的其余值取决于它们对初始y_值的增量。 – bassngo 2010-08-03 00:12:51

+0

但是如果ymin比ymax更偏离yinit,那该怎么办?你会想要“挤压”不同的顶部和底部,以确保它绝对都位于[0,2]吗?这可能不是你正在寻找的。 – karpathy 2010-08-03 00:22:34

+0

我想你想要做这样的事情: M = MAX(ABS(yinit-YMIN),ABS(yinit-YMAX)) 的所有Y's: ynew =(Y-yinit)/ M +1 – karpathy 2010-08-03 00:25:34