如何在R中创建分类散点图,如箱线图?
有人知道如何在如何在R中创建分类散点图,如箱线图?,r,graph,plot,scatter-plot,boxplot,R,Graph,Plot,Scatter Plot,Boxplot,有人知道如何在R中创建散点图来创建类似PRISM graphpad的图: 我尝试使用箱线图,但它们不能以我想要的方式显示数据。graphpad生成的这些列散点图可以更好地显示数据 如有任何建议,将不胜感激 如果您不介意使用ggplot2软件包,有一种简单的方法可以使用geom\u盒形图和geom\u抖动制作类似的图形。使用mtcars示例数据: library(ggplot2) p <- ggplot(mtcars, aes(factor(cyl), mpg)) p + geom_bo
R
中创建散点图来创建类似PRISM graphpad的图:
我尝试使用箱线图,但它们不能以我想要的方式显示数据。graphpad生成的这些列散点图可以更好地显示数据
如有任何建议,将不胜感激 如果您不介意使用
ggplot2
软件包,有一种简单的方法可以使用geom\u盒形图
和geom\u抖动
制作类似的图形。使用mtcars
示例数据:
library(ggplot2)
p <- ggplot(mtcars, aes(factor(cyl), mpg))
p + geom_boxplot() + geom_jitter() + theme_bw()
库(ggplot2)
p正如@smillig提到的,您可以使用ggplot2实现这一点。下面的代码很好地再现了你想要的情节——警告:这是相当棘手的。首先加载ggplot2包并生成一些数据:
library(ggplot2)
dd = data.frame(values=runif(21), type = c("Control", "Treated", "Treated + A"))
接下来更改默认主题:
theme_set(theme_bw())
现在我们来建立这个情节
构造基础对象-不打印任何内容:
g = ggplot(dd, aes(type, values))
添加点:调整默认抖动并根据类型更改图示符:
g = g + geom_jitter(aes(pch=type), position=position_jitter(width=0.1))
在“框”上添加:计算框的结束位置。在本例中,我选择了平均值。如果您不需要该框,只需忽略此步骤即可
g = g + stat_summary(fun.y = function(i) mean(i),
geom="bar", fill="white", colour="black")
添加一些错误条:计算上限/下限并调整条宽:
g = g + stat_summary(
fun.ymax=function(i) mean(i) + qt(0.975, length(i))*sd(i)/length(i),
fun.ymin=function(i) mean(i) - qt(0.975, length(i)) *sd(i)/length(i),
geom="errorbar", width=0.2)
显示绘图
g
在上面的R代码中,我使用了stat\u summary
来计算动态所需的值。您还可以创建单独的数据帧并使用geom\u errorbar
和geom\u bar
要使用base R,请看一下我的答案
我最近遇到了同样的问题,并使用ggplot2
找到了自己的解决方案。
例如,我创建了chickwts
数据集的一个子集
library(ggplot2)
library(dplyr)
data(chickwts)
Dataset <- chickwts %>%
filter(feed == "sunflower" | feed == "soybean")
这是最后的情节:
有关更多详细信息,请查看以下帖子:
谢谢csgillespie,你的2号链接实际上给了我很多我需要的东西。但两者都是很好的解决方案。我调整了一些供自己使用。这样做的目的是能够在一个绘图帧中显示两个组的中间值,以及数据点和异常值。下面是代码:@user1322919这不是一个简单的解决方案。我想问另一个问题虽然这个链接可以回答这个问题,但最好在这里包括答案的基本部分,并提供链接供参考。如果链接页面发生更改,则仅链接的答案可能无效-
Dataset %>%
ggplot(aes(feed, weight, fill = feed)) +
geom_jitter(aes(shape = feed, col = feed), size = 2.5, width = 0.1)+
stat_summary(fun = mean, geom = "crossbar", width = 0.7,
col = c("#9E0142","#3288BD")) +
scale_fill_manual(values = c("#9E0142","#3288BD")) +
scale_colour_manual(values = c("#9E0142","#3288BD")) +
theme_bw()