在 R 中创建和组合两个图 - xy 线图和条形链图

Posted

技术标签:

【中文标题】在 R 中创建和组合两个图 - xy 线图和条形链图【英文标题】:creating and combining two plots - xy line plot with bar chain plot in R 【发布时间】:2012-03-09 13:48:27 【问题描述】:

我打算从以下两个数据集创建图表:

第一个数据(将开发底部)

position <- c(10, 26, 31, 50, 73, 92, 120, 124)  # need scale 
    minimum 0 to maximum 130
label <- c("A", "B", "C", "D", "E", "F", "G", "H")
mydf <- data.frame (position, label)

第二个数据(将在图层上绘制线图)

pos <- 1:130
value <- seq (0, 1.29, 0.01) 
mydf2 <- data.frame (pos, value) 

要开发的图(相似或更高质量):

我的审判

以下是我尝试过的,完全从头开始!

yvar <- rep(1, length(position))

require (ggplot2)


bar <- data.frame(y = c(1, 1), x = c(0, 130))
ggplot() +
  geom_line(aes(x, factor(y), group = factor(y)),
            bar, size = 2, colour = "skyblue") +
  geom_rect(aes(y = yvar,
                 xmin = position - 0.1,
                 xmax = position + 0.1,
                 ymin = 1 - yvar /2,
                 ymax = 1 + yvar /2))

【问题讨论】:

【参考方案1】:

这是一个带有基本图形的解决方案。

# Split the plot area in two
layout(matrix(c(1,1,2),nc=1))
# First plot
plot( pos, value, type="l", las=1 )
# Reduce the margins for the second plot
m <- par()$mar
m[1] <- m[3] <- 0
par(mar=m)
# Set the limits of the second plot
plot( pos, pos-pos, type="n", axes=FALSE, xlab="", ylab="" )
# Add the rectangle, the segments and the text.
polygon( 
  c(0,max(mydf2$pos),max(mydf2$pos),0), 
  .2*c(-1,-1,1,1),
  col=rgb(.1,.5,.3)
)
segments( mydf$position, -.5, mydf$position, .5 )
text(mydf$position, -.7, mydf$label)
text(mydf$position,  .7, mydf$position)

【讨论】:

以上是关于在 R 中创建和组合两个图 - xy 线图和条形链图的主要内容,如果未能解决你的问题,请参考以下文章

在R中的单个图上绘制两个变量的条形图和第三个变量的线图

Python制作带有辅助y轴的组合条形图和线图

R语言ggplot2可视化:将条形图(bar plot)和线图(line plot)组合在一起并使用双Y轴(double y axis)进行可视化其中一个Y轴显示为百分比

Python。在 Seaborn Facetgrid 上使用两个 y 轴绘制线图和条形图

如何在R中一起创建折线图和条形图[重复]

R Shiny ggplot 条形图和折线图,具有动态变量选择和 y 轴为百分比