如何解决在小提琴图表中表示点
以下代码绘制了一个带有与值相关联的权重的小提琴图表。问题是,为什么只显示一个点?顶部是 218*1=218
,因此显示了 218 处的点,这很好。但是,对于第二个和第三个,预计会在 218*0.1=21.8
和 30*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`.
>
对此有什么想法吗?
解决方法
已更新 在 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)
数据:
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)
,
根据您的评论,您似乎想要 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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。