r - 组合(叠加)ggplots
问题描述
我正在尝试组合 3 个 ggplots 而不改变任何关于情节的内容。我试图将它们相互添加,但线条的颜色变成了图例中的一种颜色。此外,我有 6 种不同类型的线条而不是 2 种。这是我为每个绘图 n1、n2 和 n3 所拥有的。
x1 <- c(10,30,50,70,100,10,30,50,70,100)
Power1<- c(0.633,0.994,0.998,0.999,1.000,0.422,0.771,0.837,0.888,0.953)
Method1 <- c(rep("Parametric, Case I", 5), rep("Nonparametric, Case I", 5))
df1 <- data.frame(Method1, Power1)
n1 <- ggplot(df1, aes(x1)) +
geom_line(aes(y=Power1,x=x1, color=Method1, linetype=Method1),color="green")+
ggtitle("Power Plot for Case I, d=2") + theme(plot.title = element_text(hjust = 0.5)) +
xlab("Sample size") + ylab("Power") +
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
panel.background = element_blank(), axis.line = element_line(colour = "black"))
x2 <- c(10,30,50,70,100,10,30,50,70,100)
Power2<- c(0.629,0.986,0.997,0.999,1.000,0.418,0.741,0.809,0.874,0.932)
Method2 <- c(rep("Parametric, Case II", 5), rep("Nonparametric, Case II", 5))
df2 <- data.frame(Method2, Power2)
n2 <- ggplot(df2, aes(x2)) +
geom_line(aes(y=Power2,x=x2, color=Method2, linetype=Method2),color="red")+
ggtitle("Power Plot for Case II, d=2") + theme(plot.title = element_text(hjust = 0.5)) +
xlab("Sample size") + ylab("Power") +
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
panel.background = element_blank(), axis.line = element_line(colour = "black"))
x3 <- c(10,30,50,70,100,10,30,50,70,100)
Power3<- c(0.599,0.908,0.994,0.999,1.000,0.379,0.613,0.765,0.832,0.917)
Method3 <- c(rep("Parametric, Case III", 5), rep("Nonparametric, Case III", 5))
df3 <- data.frame(Method3, Power3)
n3<- ggplot(df3, aes(x3)) +
geom_line(aes(y=Power3,x=x3, color=Method3, linetype=Method3),color="blue")+
ggtitle("Power Plot for Case III, d=2") + theme(plot.title = element_text(hjust = 0.5)) +
xlab("Sample size") + ylab("Power") +
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
panel.background = element_blank(), axis.line = element_line(colour = "black"))
解决方案
绑定数据框并仅在单个 ggplot 调用中将变量用于审美。
library(tidyverse)
Power<- c(0.633,0.994,0.998,0.999,1.000,0.422,0.771,0.837,0.888,0.953)
x1 <- c(10,30,50,70,100,10,30,50,70,100)
Method <- c(rep("Parametric, Case I", 5), rep("Nonparametric, Case I", 5))
df1 <- data.frame(Method, Power, x=x1)
x2 <- c(10,30,50,70,100,10,30,50,70,100)
Power<- c(0.629,0.986,0.997,0.999,1.000,0.418,0.741,0.809,0.874,0.932)
Method <- c(rep("Parametric, Case II", 5), rep("Nonparametric, Case II", 5))
df2 <- data.frame(Method, Power,x =x2)
x3 <- c(10,30,50,70,100,10,30,50,70,100)
Power <- c(0.599,0.908,0.994,0.999,1.000,0.379,0.613,0.765,0.832,0.917)
Method <- c(rep("Parametric, Case III", 5), rep("Nonparametric, Case III", 5))
df3 <- data.frame(Method, Power, x= x3)
df_bind <- bind_rows(df1, df2, df3, .id = 'method_id') # add data frame ids for method colouring.
ggplot(df_bind, aes(x, Power)) +
geom_line(aes(color = method_id, linetype = grepl('Parametric', Method))) +
scale_color_manual(values = c('green', 'red', 'blue'))
由reprex 包于 2020-03-16 创建(v0.3.0)
我为线型添加了条件语句。为了使这更优雅,您可以使用相同的语句创建一个帮助列,或者通过更改名称/值scale_linetype_manual
推荐阅读
- styled-components - React:通过样式组件将 box-sizing 应用于所有元素
- docker - Visual Studio Code 远程容器和 Go GOPATH
- laravel - 通过分页页面持久化查询数据
- file - 如何将 Google Sheets API 响应存储到文件
- java - android.os.BadParcelableException ClassNotFoundException 时解组:内部类
- javafx - 使用 Jfoenix 9.0.9 在 JavaFX 中开发的正确设置
- symfony - 在 easy-admin 包中添加虚拟属性
- google-app-maker - 使用复选框过滤表视图上的布尔值。继承的(关系)数据源
- rx-java - 在不包含所有项目的集合上引发错误
- windows - 创建一个带有循环的 cmd 文件(wget 递归下载)