R:ggplot2&;情节:再现';参考带';关于R中Tableau的条形图

R:ggplot2&;情节:再现';参考带';关于R中Tableau的条形图,r,ggplot2,plotly,R,Ggplot2,Plotly,我正在尝试重新创建一些我每天在R的Tableau中使用的功能(ggplot2和plotly)。我需要能够创建类似下图的参考带和参考线。我已经知道如何从geom_errorbar()创建参考线。然而,我似乎找不到“参考带”的解决方案 如果在ggplot2或plotly中无法找到解决方案,我会打开另一个包,但我需要一些静态的Rmarkdown报告和动态的html小部件仪表板 下面我有一些示例代码,我想为每个人的条形图添加“高”和“低”的参考带 library(ggplot2) #Create Da

我正在尝试重新创建一些我每天在R的Tableau中使用的功能(ggplot2和plotly)。我需要能够创建类似下图的参考带和参考线。我已经知道如何从geom_errorbar()创建参考线。然而,我似乎找不到“参考带”的解决方案

如果在ggplot2或plotly中无法找到解决方案,我会打开另一个包,但我需要一些静态的Rmarkdown报告和动态的html小部件仪表板

下面我有一些示例代码,我想为每个人的条形图添加“高”和“低”的参考带

library(ggplot2)

#Create Data
Name <- c("Rick","Carl","Daryl","Glenn")
Pos <- c("M","M","D","D")
Load <- c(100,110,90,130)
High <- c(150,160,130,140)
Low <- c(130,145,120,130)
data <- data.frame(Name,Pos,Load,High,Low)
rm(Name,Pos,Load,High,Low)


#create plot
ggplot(data = data, aes(x = Name, y = Load)) +
    geom_bar(stat ="identity", width=.4) 
库(ggplot2)
#创建数据
Name
geom\u rect()
geom\u errorbar()
更好,因为您可以复制发布的相同图像。让我们一起来看看这两本书

以下示例可用于降价:

library(dplyr)
library(ggplot2)

delta <- 0.5
data <- mtcars %>% group_by(cyl, vs) %>%
  summarise(xmin = first(cyl) - 1,
            xmax = first(cyl) + 1,
            wt = mean(wt),
            ymin = wt - delta,
            ymax = wt + delta)

ggplot(data = data, aes(x = cyl, y = wt)) +
  geom_rect(aes(xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax),
            fill = "indianred", alpha = 0.4) + # adds the reference band layer before
  geom_bar(stat = "identity", fill = "darkblue", width = 1) + # the bar layer
  facet_wrap(~vs) + theme_classic()
库(dplyr)
图书馆(GG2)
增量%
总结(xmin=第一个(气缸)-1,
xmax=第一个(气缸)+1,
wt=平均值(wt),
ymin=wt-δ,
ymax=重量+增量)
ggplot(数据=数据,aes(x=气缸,y=重量))+
几何误差(aes(xmin=xmin,xmax=xmax,ymin=ymin,ymax=ymax),
fill=“indianred”,alpha=0.4)+#在
几何图形条(stat=“identity”,fill=“darkblue”,width=1)+条层
刻面包装(~vs)+主题(经典)

如果只需要一个参考波段,则只需对所有观测值使用相同的
ymax
ymin
参数即可


在html版本中,您仍然需要付出更多的努力,因为
plotly::ggplotly()
会把事情搞砸。

我找到了解决方案。我需要将xmin和xmax设置为数字,然后才能创建参考条

library(ggplot2)

#Create Data
NameID <- c("Rick","Carl","Daryl","Glenn")
Pos <- c("M","M","D","D")
Load <- c(100,110,90,130)
High <- c(110,160,130,140)
Low <- c(90,145,120,130)
df <- data.frame(NameID,Pos,Load,High,Low)
rm(NameID,Pos,Load,High,Low)

p <- ggplot()
p <- p + scale_x_discrete()
p <- p + geom_rect(data=df, 
                       aes(xmin = as.numeric(NameID)-.25, 
                           xmax = as.numeric(NameID)+.25, 
                           ymin = Low, 
                           ymax = High),
                       fill = "blue", alpha = 0.2)
p <- p + geom_bar(data = df, aes(x = NameID, y = Load), stat="identity", width = .4)
p
库(ggplot2)
#创建数据

NameID给我们一个可复制的例子(数据和你的实际ggplot图)将使它更容易帮助你。谢谢你,我会的。好的,我用了你的解决方案。当x轴连续时,这是有意义的。如果y轴是离散的,我如何使其工作?我在顶部添加了一个数据集。