如何在单个 ggplot2 图中指定不同的调色板和线条大小

Rod*_*phe 4 r ggplot2

我使用ggplot2以下代码在同一个图表中显示四个分布(数据可在此处下载: https: //www.dropbox.com/s/l5j7ckmm5s9lo8j/1.csv ?dl =0):

require(reshape2)
library(ggplot2)
library(RColorBrewer)

fileName = "./1.csv" # downloadable there: https://www.dropbox.com/s/l5j7ckmm5s9lo8j/1.csv?dl=0

mydata = read.csv(fileName,sep=",", header=TRUE)

dataM = melt(mydata,c("bins"))

ggplot(data=dataM, aes(x=bins, y=value, colour=variable)) +
xlab("bins") + ylab("freq") + geom_line(size = .5, alpha = .9) +
scale_colour_brewer(type = "qual", palette = 7) +
geom_line(size = .5, alpha = .9) +
theme_bw() +
theme(plot.background = element_blank()
,panel.grid.minor = element_blank()
,axis.line = element_blank()
,legend.key = element_blank()
,legend.title = element_blank()) +
scale_y_continuous(expand=c(0,0)) + 
scale_x_continuous(expand=c(0,0))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如何更改此图形,以便 B、E 和 W 根据特定调色板(例如:scale_colour_brewer)以 0.5 的宽度显示,而 Rscale_colour_brewer(type = "qual", palette = 7)以 1 的宽度显示?

Jaa*_*aap 8

您可以在单独的中调用数据的子集geom_line

ggplot() +
  geom_line(data=dataM[dataM$variable!="R",], aes(x=bins, y=value, colour=variable), size = .5, alpha = .9) +
  geom_line(data=dataM[dataM$variable=="R",], aes(x=bins, y=value, colour=variable), size = 1.5, alpha = .9) +
  scale_colour_brewer(type = "qual", palette = 7) +
  theme_bw() +
  theme(plot.background = element_blank(), panel.grid.minor = element_blank(), axis.line = element_blank(),
        legend.key = element_blank(), legend.title = element_blank()) +
  scale_y_continuous("freq", expand=c(0,0)) + 
  scale_x_continuous("bins", expand=c(0,0))
Run Code Online (Sandbox Code Playgroud)

这给出: 在此输入图像描述


另一个解决方案(如@baptiste建议)是手动设置sizecolour比例:

ggplot(data=dataM, aes(x=bins, y=value, colour=variable, size = variable)) +
  geom_line(alpha = .9) +
  scale_colour_manual(breaks=c("B","E","W","R"), values=c("green","orange","blue","pink")) +
  scale_size_manual(breaks=c("B","E","W","R"), values=c(0.5,0.5,0.5,1.5)) +
  theme_bw() +
  theme(plot.background = element_blank(), panel.grid.minor = element_blank(), axis.line = element_blank(),
        legend.key = element_blank(), legend.title = element_blank()) +
  scale_y_continuous("freq", expand=c(0,0)) + 
  scale_x_continuous("bins", expand=c(0,0))
Run Code Online (Sandbox Code Playgroud)

这给出了或多或少相同的结果: 在此输入图像描述