2 y轴哑铃ggplot2

时间:2018-02-23 14:14:25

标签: r ggplot2 multiple-axes

enter image description here我对R和编程很新。所以请原谅我的无知,我正在努力学习。

我有两组数据,我想将它们相互映射。两者都有27行3列;一组称为“范围”,另一组称为“rangePx”。 列“Comp”具有不同的组分,列“Min”是最小浓度(%),列“Max”是最大浓度(%)。

我想做一个2-y轴哑铃图,y轴是不同的成分,x轴是浓度。

我设法创建1 y轴哑铃图,但是添加第二个y轴时遇到麻烦。

以下是“范围”数据的快照

 head(range)

# A tibble: 6 x 3
  Comp         Min    Max
  <chr>      <dbl>  <dbl>
1 Methane   0.0100 100   
2 Ethane    0.0100  65.0 
3 Ethene    0.100   20.0 
4 Propane   0.0100  40.0 
5 Propene   0.100    6.00
6 Propadien 0.0500   2.00

这里是“rangePx”数据

的快照
head(rangePx)
# A tibble: 6 x 3
  Comp           Min    Max
  <chr>        <dbl>  <dbl>
1 Methane   50.0     100   
2 Ethane     0.00800  14.0 
3 Ethene     0         0   
4 Propane    0.00800   8.00
5 Propene    0         0   
6 Propadien  0         0  

以下是我使用的代码:

library(ggplot2)
library(ggalt)
library(readxl)

theme_set(theme_classic())

range <- read_excel(range.xlsx)
rangePx <- read_excel(rangePx.xlsx")

p <- ggplot(range, aes(x=Max, xend=Min, y = Comp, group=Comp))
p <- p + geom_dumbbell(color="blue")
p
px <- ggplot(rangePx, aes(x=Max, xend=Min, y = Comp, group=Comp))
px <- px + geom_dumbbell(color="green")
p <- p + geom_dumbbell(aes(y=px, color="red"))
p

这是我打电话给p时的抱怨:

Error: Aesthetics must be either length 1 or the same as the data (27): y, colour, x, xend, group

在这里,我看到了一个6x3数据帧,但我的原始数据是27x3

任何人都可以帮助我吗?

Thnx提前

1 个答案:

答案 0 :(得分:0)

{ 0: { "date":"20180221", "comment":"Hello world" }, 1: { "date":"20180220", "comment":"Hello world" } } 没有能力绘制2个y轴 - 这是Hadley Wickham编写包的故意决定。你可以在这里看到他对类似问题的回答,在那里他评论了他不包括的原因:

Plot with 2 y axes, one y axis on the left, and another y axis on the right

正如评论和回答问题所述,如果您想使用ggplot2,则必须使用分面进行比较。否则你需要使用不同的绘图包。