R 几何点最小点大小不成比例
我使用点大小可视化变量。 我的问题是,第一个(最小的)点大小(在本例中为“70”)明显(不成比例)小于其余的点大小。(参见CP的图例) 这是我正在使用的代码:R 几何点最小点大小不成比例,r,ggplot2,R,Ggplot2,我使用点大小可视化变量。 我的问题是,第一个(最小的)点大小(在本例中为“70”)明显(不成比例)小于其余的点大小。(参见CP的图例) 这是我正在使用的代码: ggplot(data=testdata, aes(x=variable, y=value, group=ID, size=CP)) + geom_point() 关于这些数据: ID CP variable value 1 C1 70 A 76 2 C2 95 A 20 3
ggplot(data=testdata, aes(x=variable, y=value, group=ID, size=CP)) + geom_point()
关于这些数据:
ID CP variable value
1 C1 70 A 76
2 C2 95 A 20
3 C3 100 A 30
4 C4 NA A 17
5 C1 70 B 36
6 C2 95 B 10
7 C3 100 B 51
8 C4 NA B 41
9 C1 70 C 89
10 C2 95 C 1
11 C3 100 C 94
12 C4 NA C 6
13 C1 70 D 100
14 C2 95 D 98
15 C3 100 D 16
16 C4 NA D 33
现在,当我尝试调整点大小时,R不喜欢它:
> testplot = ggplot(data=testdata, aes(x=variable, y=value, group=ID, size=CP)) + geom_point()
> testplot = testplot + scale_size_discrete(range=c(3,5))
Warning message:
Using size for a discrete variable is not advised.
> testplot
Error: Continuous value supplied to discrete scale
没有情节产生。这一点也一样:
> testplot = ggplot(data=testdata, aes(x=variable, y=value, group=ID, size=CP)) + geom_point()
> testplot = testplot + scale_size_continuous(to=c(3,5))
Error in scale_size_continuous(to = c(3, 5)) :
unused argument (to = c(3, 5))
> testplot
Error: Continuous value supplied to discrete scale
事实证明,这是“人类感知的人工制品”,这意味着点的缩放是正确的,但人们可能会有这样的印象:它不是。请参阅开发人员的讨论
对我来说,最好的解决办法是使用scale\u半径(范围=c(1,6))
进一步阅读感知和缩放的关系:解决方法:
scale\u size(限制=c(1,max(testdata$CP),中断=unique(testdata$CP))
,但我不确定为什么默认值不起作用。您不能对连续的大小变量使用离散的大小缩放,这就是为什么缩放大小\u离散的无法修复的原因。您只是缺少了范围参数,而不是到参数-缩放大小\u连续(range=c(3,5))
。谢谢@aosmith确实scale\u size\u continuous(range=c(3,5))
按预期工作。我仍然想知道为什么第一个点的大小如此小,除非我指定了一个与图例中的步骤相等的范围。数据的分类性质是否把它弄乱了?我是否必须为每个图形手动调整范围?您的数据不是分类的(不管怎样,不是在类中的).同意@Gregor,当我将CP
中的数据更改为77 95 84 NA
(依此类推)时,数据不是分类的图例变为正常-并且绘图仍然有一些点,这些点与图例不再匹配!在本例中,这显然是不正确的-问题中显示为70的点明显小于显示为100的点大小的70%。这不是人类感知的人工制品。@Ben,它小得多,并且有一个背后的原因。请特别注意。非默认缩放选项,如scale\u radius()
提供了备选方案。