作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将为您提供有关数据的想法,然后我认为应该更容易理解我要实现的目标。
Repex:
ID <- c(1, 1, 2, 3, 3, 3)
cat <- c("Others", "Others", "Population", "Percentage", "Percentage", "Percentage")
logT <- c(2.7, 2.9, 1.5, 4.3, 3.7, 3.3)
m <- c(1.7, 1.9, 1.1, 4.8, 3.2, 3.5)
aggr <- c("median", "median", "geometric mean", "mean", "mean", "mean")
over.under <- c("overestimation", "overestimation", "underestimation", "underestimation", "underestimation", "underestimation")
data <- cbind(ID, cat, logT, m, aggr, over.under)
data <- data.frame(data)
data$ID <- as.numeric(data$ID)
data$logT<- as.numeric(data$logT)
data$m<- as.numeric(data$m)
Fig <- data %>% ggplot(aes(x = logT, y = m, color = over.under)) +
facet_wrap(~ ID) +
geom_point() +
scale_x_continuous(name = "log (True value)", limits=c(1, 7)) +
scale_y_continuous(name = NULL, limits=c(1, 7)) +
geom_abline(intercept = 0, slope = 1, linetype = "dashed") +
theme_bw() +
theme(legend.position='none')
Fig
aggr
的值标记每个图的y轴。因此,对于ID 1,应该说是中位数,对于ID 2的几何平均值和ID 3的平均值。
mtext(data1$aggr, side = 2, cex=1) #or
ylab(data1$aggr) #or
strip.position = "left"
cat
。因此,对于ID 1“其他”,ID 2“填充”和ID 3“百分比”。我尝试使用
legend()
,但我也无法解决问题。
最佳答案
mtext用于plot()
。 ggplot是另一个绘图系统,因此它将无法正常工作。不幸的是,没有很多选择,一种方法是删除xlab,并将 strip 用作y轴:
LAB =tapply(as.character(data$aggr),data$ID,unique)
Fig <- data %>% ggplot(aes(x = logT, y = m, color = over.under)) +
geom_point() +
scale_x_continuous(name = "log (True value)", limits=c(1, 7)) +
scale_y_continuous(name = NULL, limits=c(1, 7)) +
geom_abline(intercept = 0, slope = 1, linetype = "dashed") +
theme_bw() +
theme(legend.position='none') +
facet_wrap(~ID, scales = "free_y",strip.position = "left",
labeller = as_labeller(LAB )) +
ylab(NULL) +
theme(strip.background = element_blank(),strip.placement = "outside")
library(gridExtra)
plts = by(data,data$ID,function(i){
ggplot(i,aes(x=logT,y=m,color=over.under)) +
geom_point() +
scale_x_continuous(name = "log (True value)", limits=c(1, 7)) +
scale_y_continuous(name = unique(i$agg), limits=c(1, 7)) +
geom_abline(intercept = 0, slope = 1, linetype = "dashed") +
theme_bw() +
scale_color_manual(values=c("overestimation"="turquoise","underestimation"="orange"))+
theme(legend.position='none')
})
grid.arrange(grobs=plts,ncol=3)
关于R ggplot2 : How can I name the y axis depending on the value of a variable with facet_wrap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61528582/
我是一名优秀的程序员,十分优秀!