混合图与直方图和叠加线图在同一图中

时间:2015-08-14 19:23:09

标签: r plot

我知道在相同的数字中混合绘图类型有强烈的意见,特别是如果涉及两个y轴。然而,这种情况我别无选择 - 我需要使用遵循标准格式的R创建图形 - 一个轴上的直方图(案例计数),以及显示独立轴上不相关的速率的叠加线图。

我能做的最好的是堆叠的ggplot2方面,但对于本分析的目的而言,这并不像组合图那样容易理解。审核此输出的人将需要它们习惯的格式。

我在下面附上一个例子。 figure1

有什么想法吗?

出于礼仪目的,以下示例数据:

y1<-sample(0:1000,20,rep=TRUE)
y2<-sample(0:100,20,rep=TRUE)
x<-1981:2000

2 个答案:

答案 0 :(得分:1)

我感到你的痛苦 - 不得不重新创造阴谋。甚至曾经在SAS做过一次

如果它是一次性的话,我很想去上学。像这样的东西:

# Generate some data
someData <- data.frame(Year = 1987:2009,
  mCases = rpois(23, 3),
  pVac = sample(55:80, 23, T))

par(mar = c(5, 5, 5, 5))
with(someData, {

  # Generate the barplot
  BP <- barplot(mCases, ylim = c(0, 18), names = Year, 
    yaxt = "n", xlab = "", ylab = "Measles cases in Thousands")
  axis(side = 2, at = 2*1:9, las = 1)
  box()

  # Add the % Vaccinated
  par(new = T)
  plot(BP, pVac, type = "l", ylim = c(0, 100), axes = F, ylab = "", xlab = "")
  axis(side = 4, las = 1)
  nudge <- ifelse(pVac > median(pVac), 2, -2)
  text(BP, pVac + nudge, pVac)
  mtext(side = 4, "% Vaccinated", line = 3)
  par(new = F)
})

答案 1 :(得分:1)

尝试library(plotrix)

library(plotrix)

## Create sample data
y2<-sample(0:80,20,rep=TRUE)
x2<-sort(sample(1980:2010,20,rep=F))
y1<-sample(0:18,20,rep=TRUE)
x1<-sort(sample(1980:2010,20,rep=F))
x<-1980:2010

twoord.plot(x1,y1,x2,y2,
            lylim=c(0,18),rylim=c(0,100),type=c("bar","l"),
            ylab="Measles Cases in thousands",rylab="% Vaccinated",
            lytickpos=seq(0,18,by=2),rytickpos=seq(0,100,by=10),ylab.at=9,rylab.at=50,
            lcol=3,rcol=4)

enter image description here