Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 几何点最小点大小不成比例_R_Ggplot2 - Fatal编程技术网

R 几何点最小点大小不成比例

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

我使用点大小可视化变量。 我的问题是,第一个(最小的)点大小(在本例中为“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  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()
提供了备选方案。