在小提琴图表中表示点

问题描述

以下代码绘制了一个带有与值相关联的权重的小提琴图表。问题是,为什么只显示一个点?顶部是 218*1=218,因此显示了 218 处的点,这很好。但是,对于第二个和第三个,预计会在 218*0.1=21.830*0.9=27 处看到两个点。

> library(ggplot2)
> mydata <- read.csv('test.csv',header=T,row.names=1)
> mydata
       V1  V2 V3
P1.K1 218 1.0  R
P2.K1 218 0.1  R
P2.K2  30 0.9  R
> p <- ggplot(mydata,aes(x=V3,y=V1,weight=V2)) + geom_violin(trim=FALSE)
> p + geom_dotplot(binaxis='y',stackdir='center',dotsize=1)
`stat_bindot()` using `bins = 30`. Pick better value with `binwidth`.
>

enter image description here

对此有什么想法吗?

解决方法

已更新 在 Waldi 的帮助下,现在应该可以工作了。

这里的主要内容是将加权值分配给 geom_dotplot 这将仅用一个点解决 Op 的问题。

library(ggplot2)

#  add V1_weight to mydata
mydata <- mydata %>% 
  mutate(V1_weight= V1*V2)

ggplot(mydata) + 
  geom_violin( mapping = aes(x = V3,y = V1,weight = V2),trim=FALSE) +
  geom_dotplot(aes(x = V3,y=V1_weight),binaxis='y',stackdir='center',dotsize=1) 

enter image description here

数据:

structure(list(id = c("P1.K1","P2.K1","P2.K2"),V1 = c(218,218,30),V2 = c(1,0.1,0.9),V3 = c("R","R","R"),V1_weight = c(218,21.8,27)),row.names = c(NA,-3L),class = c("tbl_df","tbl","data.frame"))
,

geom_dotplot 没有 weight 映射:

library(ggplot2)
ggplot(mydata,) + geom_violin( mapping = aes(x = V3,trim=FALSE) +
                   geom_dotplot(mydata,mapping = aes(x = V3,y = V1),dotsize=1)

enter image description here

,

根据您的评论,您似乎想要 Waldi 的回答中的 geom_violin() 行和 TarJae 的回答中的 geom_dotplot() 行:

ggplot(mydata,aes(x = V3)) + 
  geom_violin(aes(y = V1,trim = FALSE) + 
  geom_dotplot(aes(y = V1 * V2),binaxis = 'y',stackdir = 'center',dotsize = 1)

enter image description here

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...