Algorithm 点的对数绘图

Algorithm 点的对数绘图,algorithm,drawing,logarithm,drawing2d,Algorithm,Drawing,Logarithm,Drawing2d,我想知道如果给一些2D点,如何计算在屏幕上以对数比例绘制点的位置 我试着只取点的所有y值的对数,然后“正常”地绘制它们(在高度上绘制点[x,log(y)]=>height:height*log(y)/log(max))。但这种方法会导致y值小于1时出现问题。所以这让我怀疑我的方法是否是正确的。我可能会使用log(y/min)来代替log(y) 欢迎任何关于改进或更好方法的建议 通过假设y值为正值,使用您自己的方法带有小偏差,例如:height*log(y-min+1)/log(max-min+1

我想知道如果给一些2D点,如何计算在屏幕上以对数比例绘制点的位置

我试着只取点的所有y值的对数,然后“正常”地绘制它们(在高度上绘制点[x,log(y)]=>height:height*log(y)/log(max))。但这种方法会导致y值小于1时出现问题。所以这让我怀疑我的方法是否是正确的。我可能会使用log(y/min)来代替log(y)


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

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

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

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

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

查看plot的R实现,它可能会为您提供一些线索。如果使用
plot(x,y,log='y')
则y轴以对数比例绘制


关于点查看plot的R实现,它可能会为您提供一些线索。如果使用
plot(x,y,log='y')
则y轴以对数比例绘制


关于点据我所知,您似乎试图绘制log(y),但保持y轴与y轴相同?这真的没有道理

绘制的方式很好:在(x,log(y))处绘制点

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


如果以这种方式更改y轴限制,则点将很好地拟合。

据我所知,您似乎试图绘制日志(y),但保持y轴与y轴相同?这真的没有道理

绘制的方式很好:在(x,log(y))处绘制点

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


如果以这种方式更改y轴限制,则点将非常适合。

对于1以下的y值,您想做什么?你可以只取绝对值,所以你的y轴看起来像:1000,100,10,1,0,1,10,100,1000等等。你想用1下的y值做什么?你可以只取绝对值,所以你的y轴看起来像:1000,100,10,1,0,1,10,100,1000等等。假设这个简单的场景:min(y)可能接近于零,假设0.0000001,max也可能很小,比如10(假设所有的东西都在基数10中),这种状态的方法会导致所有点的像素数接近
numberofu
。(考虑到整数的舍入,可能正好如此)。@SaeedAmiri由于对数刻度中的y,您必须规范化日志值。您需要从每个日志(y)中粗略地减去log(min(y))并绘制它。不需要减去log(min(y)),您可以减去min值,正如OPs问题(负值)所示,他有一些值小于
1
,因此min小于
1
,因此此减去操作不会产生太多变化(例如,请参见我的答案)。无论如何,我认为这个小的舍入比可能丢失这么多其他信息要好。@SaeedAmiri我的建议只是看看R实现,它是最好的IMHO之一。假设这个简单的场景:min(Y)可能接近于零,假设0.0000001,max也可能很小,比如10(假设所有的东西都在10的基数内),这种状态的方法会导致所有点的像素数接近
numberofu
。(考虑到整数的舍入,可能正好如此)。@SaeedAmiri由于对数刻度中的y,您必须规范化日志值。您需要从每个日志(y)中粗略地减去log(min(y))并绘制它。不需要减去log(min(y)),您可以减去min值,正如OPs问题(负值)所示,他有一些值小于
1
,因此min小于
1
,因此此减去操作不会产生太多变化(例如,请参见我的答案)。无论如何,我认为这种小的舍入比可能丢失这么多其他信息要好。@SaeedAmiri我的建议只是看看R实现,它是最好的IMHO之一。这是更有趣的版本,因为这是规范化,而不是转移偏见。谢谢。这是一个更有趣的版本,因为这是标准化,而不是转移偏见。谢谢。通过偏移“-min”值,您删除了图形常量。在某些任务中,这是不可接受的,可能是在“1”上移动所有动态范围更为成功。保存所有图形数据并接收良好的对数变换。通过将偏差移到“-min”值,可以删除图形常量。在某些任务中,这是不可接受的,可能是在“1”上移动所有动态范围更为成功。保存所有图形数据并接收良好的对数变换。