【问题标题】:Varying dotsizes in ggplot2's geom_dotplot在 ggplot2 的 geom_dotplot 中改变点大小
【发布时间】:2019-09-30 22:21:17
【问题描述】:

我正在尝试制作一个点图,其中根据字符变量对数字 y 值进行分组。这很好用,但我也想根据另一个变量更改点的大小,以便图中有三个不同大小的点。我可以更改点的大小,只是 R 似乎做得不对。

我找不到好的样本数据集,所以我做了一个简单的例子:

#Making some sufficient data:
y1 <- c(1,1,2,3,4,5,6,6)
x1 <- c('A','A','B','C','A','A','B','B') 
size1 <- c(0.3,0.3,0.3,0.3,0.3,0.6,0.6,1.0)

data1 <- data.frame(x1,y1,size1)
data1

#define size as a vector: apparently it helps some problems
size2 <- data1$size1 

#plot my dotplot! 
ggplot(data1, aes(x=x1,y=y1)) + 
geom_dotplot(binaxis="y", stackdir="center", dotsize=size2)

总的来说,点图工作正常。 y 变量根据它们的 A、B 或 C 组进行分组。但是,点大小不正确:C 组中唯一的点应该很小(dotsize=0.3),A 组 y=1 处的两个点应该两者大小相等……依此类推。

Dotplot with all sorts of dotsize inaccuracies

“在循环中绘制不同数据集时,geom_dotplot 点大小会发生变化”问题 (geom_dotplot dot sizes change when plotting different datasets in loop) 表示 geom_dotplot 的点大小并不完全是点大小,而是与 bin 宽度相关。这可以解释为什么我有麻烦。但是,我不确定如何解决这个问题。有没有办法可靠地改变 ggplot2 点图中的点大小,或者我应该尝试使用比 geom_dotplot 更灵活的工具制作点图? (重新启动 R 和我的电脑不起作用。)

干杯!

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    您分享的堆栈溢出线程阐明了您可以使用geom_dotplot 做什么,如果您添加binwidth 参数,您可以看到dotsize 的效果。这是一个例子,

    base <- ggplot(data1, aes(x=x1,y=y1))
    base + geom_dotplot(binaxis="y", stackdir="center", dotsize=size1, binwidth = 1)
    

    输出

    【讨论】:

      【解决方案2】:

      使用geom_point 而不是geom_dotplot 应该可以解决问题

      ggplot(data1, aes(x=x1,y=y1)) + 
           geom_point(aes(size=size1))
      

      【讨论】:

      • binaxis, stackdir 不是geom_point 参数。你不需要它们。
      • 有没有办法在使用geom_point时保持点图堆叠功能?我在同一个 y 值上有多个点,它们并不是都使用 geom_point 显示的。我真的需要每个数据点都可见。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-21
      • 2022-11-07
      • 2015-03-30
      相关资源
      最近更新 更多