R ggplot中的条形图,添加水平字幕
下面你可以找到我的代码和它产生的绘图。我想在上面添加水平字幕“Scenario1”和“Scenario2”,而不是将其与“Sub-Scenario1”和“Sub-Scenario2”放在一起。有关更多说明,请参见图R ggplot中的条形图,添加水平字幕,r,ggplot2,bar-chart,R,Ggplot2,Bar Chart,下面你可以找到我的代码和它产生的绘图。我想在上面添加水平字幕“Scenario1”和“Scenario2”,而不是将其与“Sub-Scenario1”和“Sub-Scenario2”放在一起。有关更多说明,请参见图 myd只需在初始设置中使用\n添加换行符,如下所示: myd<- data.frame( var1 = rep(c("Scenario1: \nSub-Scenario 1","Scenario1: \nSub-Scenario 2","Scenario2: \nSub-Sc
myd只需在初始设置中使用\n
添加换行符,如下所示:
myd<- data.frame( var1 = rep(c("Scenario1: \nSub-Scenario 1","Scenario1: \nSub-Scenario 2","Scenario2: \nSub-Scenario 1","Scenario2: \nSub-Scenario 2"),each=2),
samp = rep(c("Outcome 1","Outcome 2"),4),
V4=rep(NA,8),V3 = rep(NA,8), V2 = rep(NA,8), V1 = rep(NA,8) )
myd在这里,我使用coord_cartesian
设置绘图区域,并关闭clip
以绘制面板外的标签
myd<- data.frame( var1 = rep(c("Scenario1: Sub-Scenario 1","Scenario1: Sub-Scenario 2","Scenario2: Sub-Scenario 1","Scenario2: Sub-Scenario 2"),each=2),
samp = rep(c("Outcome 1","Outcome 2"),4),
V4=rep(NA,8),V3 = rep(NA,8), V2 = rep(NA,8), V1 = rep(NA,8) )
myd[myd$samp=="Outcome 1","V1"]=runif(4,100,200)
myd[myd$samp=="Outcome 1","V2"]=runif(4,100,200)
myd[myd$samp=="Outcome 1","V3"]=runif(4,100,200)
myd[myd$samp=="Outcome 1","V4"]=runif(4,100,200)
myd[myd$samp=="Outcome 2","V1"]=runif(4,100,200)
myd[myd$samp=="Outcome 2","V2"]=runif(4,100,200)
myd[myd$samp=="Outcome 2","V3"]=runif(4,100,200)
myd[myd$samp=="Outcome 2","V4"]=run[![enter image description here][1]][1]if(4,100,200)
library(reshape2)
library(ggplot2)
library(ggstance)
library(tidyverse)
meltd<- melt(myd, id.vars=1:2)
meltd %>%
separate(col = var1,
into = c("scenario", "subscenario"),
remove = F,
sep = ":") %>%
mutate(subscenario = fct_rev(subscenario)) %>%
ggplot(aes(value, var1,
fill = variable,
label = paste0(round(value, 1), "%"))) +
geom_barh(stat = "identity",
position = position_dodgev()) +
theme_bw() +
facet_grid(samp ~ ., switch = "y",
scales = "free_y", space="free",
labeller = label_bquote(rows = .(samp))) +
theme(legend.position = "none",
strip.placement = "outside") +
scale_y_discrete(NULL,
labels = rep(c("Subscenario 1", "Subscenario 2"), 2)) +
xlab("Relative change in 2016 (in %)") +
coord_cartesian(xlim = c(0,200), clip = "off") +
geom_text(data = data.frame(
x = -15,
y = rep(c(2.5,4.5), ,2),
scenario = rep(c("Scenario1", "Scenario2"), 2)),
inherit.aes = F, aes(x,y, label = scenario),
hjust = 1)
myd%
变异(子场景=fct_版本(子场景))%>%
ggplot(aes(值,变量1,
填充=变量,
标签=粘贴0(圆形(值,1),“%”)+
geom_barh(stat=“identity”,
位置=位置(v())+
主题_bw()+
小平面网格(samp~,switch=“y”,
scales=“free_y”,space=“free”,
labeller=label_bquote(行=(samp)))+
主题(legend.position=“无”,
strip.placement=“外部”)+
比例y离散(空,
标签=代表(c(“第1子场景”、“第2子场景”)2)+
xlab(“2016年的相对变化(单位%)”)+
坐标笛卡尔(xlim=c(0200),clip=“off”)+
geom_文本(数据=data.frame(
x=-15,
y=代表(c(2.5,4.5),2),
场景=代表(c(“场景1”,“场景2”),2),
inherit.aes=F,aes(x,y,label=scenario),
hjust=1)
谢谢,但这并不是我想要的。我不希望“场景2”在“结果1”中写两次,而只是在两个子场景上方写一次。看看我的数字。
myd<- data.frame( var1 = rep(c("Scenario1: Sub-Scenario 1","Scenario1: Sub-Scenario 2","Scenario2: Sub-Scenario 1","Scenario2: Sub-Scenario 2"),each=2),
samp = rep(c("Outcome 1","Outcome 2"),4),
V4=rep(NA,8),V3 = rep(NA,8), V2 = rep(NA,8), V1 = rep(NA,8) )
myd[myd$samp=="Outcome 1","V1"]=runif(4,100,200)
myd[myd$samp=="Outcome 1","V2"]=runif(4,100,200)
myd[myd$samp=="Outcome 1","V3"]=runif(4,100,200)
myd[myd$samp=="Outcome 1","V4"]=runif(4,100,200)
myd[myd$samp=="Outcome 2","V1"]=runif(4,100,200)
myd[myd$samp=="Outcome 2","V2"]=runif(4,100,200)
myd[myd$samp=="Outcome 2","V3"]=runif(4,100,200)
myd[myd$samp=="Outcome 2","V4"]=run[![enter image description here][1]][1]if(4,100,200)
library(reshape2)
library(ggplot2)
library(ggstance)
library(tidyverse)
meltd<- melt(myd, id.vars=1:2)
meltd %>%
separate(col = var1,
into = c("scenario", "subscenario"),
remove = F,
sep = ":") %>%
mutate(subscenario = fct_rev(subscenario)) %>%
ggplot(aes(value, var1,
fill = variable,
label = paste0(round(value, 1), "%"))) +
geom_barh(stat = "identity",
position = position_dodgev()) +
theme_bw() +
facet_grid(samp ~ ., switch = "y",
scales = "free_y", space="free",
labeller = label_bquote(rows = .(samp))) +
theme(legend.position = "none",
strip.placement = "outside") +
scale_y_discrete(NULL,
labels = rep(c("Subscenario 1", "Subscenario 2"), 2)) +
xlab("Relative change in 2016 (in %)") +
coord_cartesian(xlim = c(0,200), clip = "off") +
geom_text(data = data.frame(
x = -15,
y = rep(c(2.5,4.5), ,2),
scenario = rep(c("Scenario1", "Scenario2"), 2)),
inherit.aes = F, aes(x,y, label = scenario),
hjust = 1)