ggplot2的geom_dotplot中的点大小变化

时间:2019-09-30 22:21:17

标签: r ggplot2

我正在尝试制作一个点阵图,其中根据字符变量将数字y值分组。效果很好,但我还想根据另一个变量来更改点的大小,以便在图中有三种不同的点大小。我可以更改点的大小,只是R似乎无法正确设置。

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

{
    id: "5b40b6eb-538f-a015-9196-1cc63cf8d7ae",
    name: "mittens",
    hatId: "0845de76-9d68-cfee-0ebb-473ccddf16bc",
    hat: {
        id: "0845de76-9d68-cfee-0ebb-473ccddf16bc",
        name: 'top hat',
    }
}

总体而言,该点图工作正常。 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,我的计算机不起作用。)

干杯!

2 个答案:

答案 0 :(得分:0)

使用geom_point代替geom_dotplot应该可以解决问题

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

resultingplot

答案 1 :(得分:0)

您共享的堆栈溢出线程阐明了如何使用geom_dotplot,并且,如果添加了binwidth参数,则可以看到dotsize的效果。这是一个示例,

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

输出

dot_plot