- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一些数据显示对治疗的 react (分类变量)。每个复制也有一个已知的值分配给它基于治疗相对于个体的幅度(连续变量)。我想要做的是以类似的方式使用 ggplot2
在单个图中显示对治疗效果(条形图)和连续变量(散点图/回归)的响应可以使用 facet_wrap
或 facet_grid
命令。基本上,我想使用 ggplot2
重新创建下面的图。
这是我用来生成示例数据和创建绘图的代码
## GENERATE CONTINUOUS VARIABLES FOR EACH TREATMENT (A - D)
A <- abs(norm(10, 1, 1))
B <- abs(rnorm(10, 3, 1))
C <- abs(rnorm(10, 5, 1))
D <- abs(rnorm(10, 7, 1))
## GENERATE RESPONSE TO TREATMENTS
res_A<-rnorm(10, 28, 3)
res_B<-rnorm(10, 22, 3)
res_C<-rnorm(10, 18, 3)
res_D<-rnorm(10, 12, 3)
## ESTABLISH DATA FRAMES FOR TREATMENTS AND RESPONSE
treatments<-data.frame(A, B, C, D)
response<-data.frame(res_A, res_B, res_C, res_D)
## CONVERT EACH DATA FRAME TO LONG FORM
library(reshape2)
treatments <-treatments %>% gather(Treatment, cont_x, A:D)
response <-response %>% gather(Treatment, Response, res_A:res_D)
## CREATE FINAL DATA FRAME WITH REQUIRED DATA
data<-data.frame(treatments$Treatment, treatments$cont_x, response$Response)
colnames(data) <- c("Treatment", "X", "Response")
## ESTABLISH MEANS AND STANDARD ERROR FOR TREATMENT EFFECTS
means<-tapply(data$Response,list(data$Treatment),mean,na.rm=T)
ER<-tapply(data$Response,list(data$Treatment),sd,na.rm=T)/sqrt(tapply(data$Response,list(data$Treatment),length))
## SET AESTHETICS AND LABEL VALUES
cols<-c("darkcyan","olivedrab3", "palevioletred3","brown3")
labs<-c("A", "B", "C", "D")
## GENERATE PLOT CANVASS
par(mfrow=c(1,2))
par(mar=c(3.5,3,2,1))
## GENEATE BAR PLOT
graph<-tapply(data$Response,data$Treatment,mean,na.rm=T)
plot<-barplot(graph,col=cols,las=1,xaxt='n',yaxt='n',
xlab=NA,ylab =NA,font.lab=2,
cex=0.6,cex.lab=0.6,font.lab=2,font.axis=2,
cex.axis=0.6,ylim=c(0,40), main="TREATMENT EFFECTS")
box()
arrows(x0=plot,y0=means-ER,x1=plot,
y1=means+ER,code=3,angle=90,length=0.02,lwd=1)
axis(side=1,line=0,at=plot,labels=labs,
cex.axis=0.8,mgp=c(0,0.5,0),tck=-0.02,font.axis=1)
axis(side=2,line=0,at=seq(0,40,10),las=1,cex.axis=0.8,
labels=seq(0,40,10),cex=0.6,mgp=c(0,0.6,0))
xlab<-c("Treatment")
ylab<-c("Response")
mtext(xlab, side=1, cex=1.2, line=2)
mtext(ylab, side=2, cex=1.2, line=1.75)
mark<-(means+ER)+2
text(0.7,mark[1],"a",font=1,cex=1.2)
text(1.9,mark[2],"b",font=1,cex=1.2)
text(3.1,mark[3],"c",font=1,cex=1.2)
text(4.3,mark[4],"d",font=1,cex=1.2)
## GENERATE SCATTERPLOT
par(mar=c(3.5, 2, 2, 2))
plot(data$X, data$Response,type='n',ylim = c(0, 40), xlim=c(0,9),pch=21, col='black', cex=1.5, xaxt='n',
yaxt='n', xlab=NA, ylab=NA, main = "CONTINUOUS RESPONSE")
axis(side=1,line=0,tck=NA,at=seq(0,9,3),labels=T,
cex.axis=0.8,mgp=c(0,0.5,0),tck=-0.02,font.axis=1)
axis(side=2,line=0,at=seq(0,40,10),labels=F, tck=0.01)
axis(side=2,line=0,at=seq(0,40,10),labels=F, tck=-0.01)
xlab<-c("Continuous variable")
mtext(xlab, side=1, cex=1.2, line=2)
## PERFORM REGRESSION AND ADD IN REGRESSION LINE
model<-lm (Response ~ X, data = data)
abline(model, lwd=2)
## ADD IN CONFIDENCE INTERVAL
newx <- seq(0,9,length.out=1000)
preds <- predict(model, newdata = data.frame(X=newx),
interval = 'confidence')
lines(newx, preds[ ,3], lty = 'dashed', col = "grey36",lwd=1)
lines(newx, preds[ ,2], lty = 'dashed', col = 'grey36',lwd=1)
polygon(c(rev(newx), newx), c(rev(preds[ ,3]), preds[ ,2]), col = 'grey80', border = NA)
## ADD IN POINTS ONTOP OF CI POLYGON
points(data$X, data$Response, bg= ifelse(data$Treatment == "A", "darkcyan",
ifelse(data$Treatment == "B","olivedrab3", ifelse(data$Treatment == "C", "palevioletred3", "brown3"))),pch=21, col='black', cex=1.5)
## ADD THE REGRESSION EQ
eq<-expression(italic("y = 28.54 - 2.16x"))
rsq<-expression(italic("R"^{2}~"= 0.76 ***"))
text(5 ,35, eq, cex=1.2)
text(4.5, 33, rsq, cex=1.2
甚至可以使用 ggplot2
来做到这一点吗?
最佳答案
当然,在 ggpubr
和 ggpmisc
的帮助下,您可以使用 ggplot2
。
library(ggplot2)
library(ggpubr)
library(ggpmisc)
a <- data %>%
group_by(Treatment) %>%
summarise(Response=mean(Response)) %>%
mutate(se = sd(Response)/sqrt(length(Response))) %>% ungroup %>%
ggplot(aes(x=Treatment,y=Response,fill = Treatment)) +
geom_col(show.legend = FALSE) +
geom_text(aes(label=tolower(Treatment)), position=position_stack(vjust = 1.3)) +
geom_errorbar(aes(ymin = Response - se, ymax = Response + se), width = 0.1) + scale_fill_manual(values = cols) +
labs(title="TREATMENT EFFECTS")
b <- data %>%
ggplot(aes(x=X,y=Response)) +
geom_smooth(method="lm", show.legend = FALSE) +
geom_point(aes(fill = factor(Treatment)),shape=21,size=3, show.legend = FALSE) +
scale_fill_manual(values = cols) +
labs(title = "CONTINUOUS RESPONSE", xlab="Continuous Variable") +
xlab("Continuous Variable") +
stat_poly_eq(formula = y ~ x, label.x = 0.9, label.y = 0.95, aes(label = paste(..eq.label.., ..rr.label.., sep = "~~~")), parse = TRUE)
ggarrange(a,b,nrow = 1)
data <- structure(list(Treatment = structure(c(1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L), .Label = c("A", "B", "C", "D"), class = "factor"), X = c(0.0267649727104236,
1.39488715616046, 0.21355823940511, 0.49907410504292, 0.375279051787701,
0.681959942595334, 2.05952354292797, 2.26083984353423, 1.11354591314711,
0.34506137947979, 2.07866454079728, 3.20194490569932, 3.26342299162599,
2.06754732525705, 4.02484423090347, 3.21831253488128, 3.56925840330762,
3.92631915144912, 2.55130407898901, 4.88369094725247, 4.85805706436391,
6.06714331089959, 5.05696298595936, 4.28599088092722, 2.64907718621996,
5.50017966947343, 5.27853136585637, 5.8694723514342, 4.57774253201089,
4.28459862391154, 6.6919479712577, 6.89039252602714, 7.36883429701188,
5.01895090471179, 7.66623439220746, 7.27620218490248, 6.44135570941742,
7.66409390386461, 8.09858213415943, 4.89114777053612), Response = c(28.647362805403,
30.5878855986189, 36.3739824861786, 33.5874379487616, 23.8060926287858,
30.8520531077353, 26.5940268747477, 28.8356526462252, 30.4727218173035,
26.8151163416507, 17.6391456006427, 19.0921380684935, 21.6950437768534,
23.9017396212974, 27.1407090174467, 15.4322366130883, 26.9809942596379,
22.7341801522041, 23.6518581209459, 21.8377270248132, 13.2905142368901,
19.8951142352182, 17.1400860924093, 16.847732448511, 15.6213812276033,
18.3368951001566, 18.7411799795391, 17.5514579276854, 14.2841781950673,
21.6044042356051, 11.0037691942103, 13.0260853225773, 10.6862778263241,
9.4482751070798, 11.9896873712498, 10.0798146375625, 12.6332310111476,
14.4806588768585, 6.89810707498932, 7.55062781781536)), class = "data.frame", row.names = c(NA,
-40L))
cols <- c("darkcyan", "olivedrab3", "palevioletred3", "brown3")
关于r - GGPLOT 方面的条形图和散点图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60879858/
我对构面有疑问,并根据构面进行了一些过滤。 我知道这是一个重复的问题,但我找不到答案。 我想知道如何在 flex 搜索中实现相同的功能。 假设我有一个有关汽车和某些方面的索引-例如模型和 颜色。 颜色
我正在尝试找到一种解决方案来为某些方面创建子方面列表。 我有一些产品的衣服尺码,它们存储在 solr 中 "Size_both":"W30L30","尺寸宽度":"W30","Size_length"
我正在尝试找到一种解决方案来为某些方面创建子方面列表。 我有一些产品的衣服尺码,它们存储在 solr 中 "Size_both":"W30L30","尺寸宽度":"W30","Size_length"
我对方面有疑问。他们不开火。我有小方面: @Aspect @Component public class SynchronizingAspect { @Pointcut("execution(
这是在 ruby 中启用散列自动生成的巧妙技巧(取自 facets): # File lib/core/facets/hash/autonew.rb, line 19 def self.a
这个问题在这里已经有了答案: 8年前关闭。 Possible Duplicate: Creating a facet_wrap plot with ggplot2 with different ann
XMLHttpRequest 能否从 http://mydomain.example/ 向 http://mydomain.example:81/ 发送请求? 最佳答案 要使两个文档被视为具有相同的来
我对 Elasticsearch 中的方面有一点问题。 我有一个表格视频,一个表格 channel ,一个 channel 有很多视频。 我只想在 X 个最新视频上显示每个 channel 的 %vi
假设我正在为 4 个人绘制数据图表:Alice、Bob、Chuck 和 Dana。我正在使用 ggplot2 制作一个多面图,每个人一个方面。我的磁盘上还有 4 张图像:Alice.png、Bob.p
我已经下载了收件箱,并且正在使用Pig和Hadoop处理电子邮件。我已经使用Pig和Wonderdog在ElasticSearch中为这些电子邮件编制了索引。 现在,我为收件箱中的每个电子邮件地址创建
我有一个模块如下: define([...], function(...){ function anothermethod() {...} function request() {....}
(defprotocol IAnimal "IAnimal" (report [o] (println (type o) " reporting.\n") (inner-repor
我有一个 Bean 需要向 InfluxDB 报告。数据库在表 INFLUX_DB_SERVER 中注册了 InfluxDB。如果你看一下代码,你会发现方法reportMemory做了很多工作,它构造
我的问题与分面有关。在下面的示例代码中,我查看了一些分面散点图,然后尝试在每个分面的基础上叠加信息(在本例中为平均线)。 tl;dr 版本是我的尝试失败了。要么我添加的平均线计算所有数据(不尊重方面变
假设我正在为 4 个人绘制数据图表:Alice、Bob、Chuck 和 Dana。我正在使用 ggplot2 制作一个多面图,每个人一个方面。我的磁盘上还有 4 张图像:Alice.png、Bob.p
尝试用两个方面包装服务类来获取此调用链: javanica..HystrixCommandAspect -> MyCustomAroundAspect -> MyService 遇到两个问题: Hys
我是 AspectJ 的初学者。我用它在我的网络驱动程序中截取屏幕截图。以下是我的包结构。 我想知道如何在 Browser 类中运行我的程序,以便它使用 Screenshots 类中定义的 Aspec
我在使用 spring aop 时遇到问题 (编辑:如果我的方法不是静态的,则代码可以正常工作) 我的包中有这个结构: aaa.bbb.ccc.Clase1.java aaa.bbb.ddd.Clas
我有一个通用存储库类,其中包含各种标记有 PostSharp 方面 (SecuredOperation) 的方法... public class Repository : IRepository, I
我有一个运行多线程的 Hibernate 事务方法“doImportImpl”。而某些记录需要依次导入,所以代码结构大致是这样的: public RecordResult doImportImpl(S
我是一名优秀的程序员,十分优秀!