对数绘图点

时间:2012-05-13 13:35:50

标签: algorithm drawing logarithm drawing2d

我想知道是否给出了一些2D点,如何计算在对数y范围内在屏幕上绘制点的位置?

我试图仅取所有点的y值的对数,然后将它们“正常”绘制(绘图点[x,log(y)] =>高度:高度* log(y)/ log (最大值))。但是这种方法会导致y值低于1的问题。所以这让我想知道我的方法一般是否正确。我可以使用的一个调整是使用log(y / min)而不是log(y)。

欢迎任何有关改进或更好方法的建议!

4 个答案:

答案 0 :(得分:2)

假设y值为正数,请使用您自己的方法,使用较小的偏差,例如:height*log(y-min+1)/log(max-min+1),以防止出现非常大的负值。

答案 1 :(得分:2)

如果以对数方式绘制y/ymin,则会将最小值缩放为1,从而保证所有对数值均为非负值。

答案 2 :(得分:0)

查看可以为您提供一些线索的情节的R实施。如果您使用plot(x,y,log='y'),那么y轴将以对数刻度绘制。

关于点数< 1,你将面临与-ve数相同的问题,对吧?因此,基本上您需要对数据进行标准化,以使所有点都在屏幕上的可见范围内。使用以下转换:

ny = number_of_pixels *(log(y) - min(log(Y)))/(max(log(Y)) - min(log(Y)))

答案 3 :(得分:0)

据我所知,你似乎试图绘制log(y),但保持y轴与y一样?这真的没有意义。

你的绘图方式很好:你在(x,log(y))处绘制一个点。

但你需要改变的是y轴的极限。如果它最初从ymin到ymax,现在需要从log(ymin)到log(ymax)。

如果你改变那个方向的y轴限制,那么这些点就可以了。