Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R ggplot中的条形图,添加水平字幕_R_Ggplot2_Bar Chart - Fatal编程技术网

R ggplot中的条形图,添加水平字幕

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

下面你可以找到我的代码和它产生的绘图。我想在上面添加水平字幕“Scenario1”和“Scenario2”,而不是将其与“Sub-Scenario1”和“Sub-Scenario2”放在一起。有关更多说明,请参见图


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)