ggplot2 facet标签与数据

时间:2018-03-03 03:16:58

标签: r ggplot2 facet

我是R新手,我可能会遗漏一些微不足道的东西,但在这里:

我有一个数据框Data,其值如下:

         Voltage Current  lnI     VoltageRange
    1    0.474   0.001 -6.907755  Low Voltage
    2    0.883   0.002 -6.214608  Low Voltage
    3    1.280   0.005 -5.298317  Low Voltage
    .      .       .        .          .
    .      .       .        .          .
    .      .       .        .          .
    .      .       .        .          .
   13    2.210   0.247 -1.398367 High Voltage

然后我尝试使用以下代码绘制它:

ggplot(data = Data, mapping = aes(x = Data$lnI, y = Data$Voltage)) +
      geom_point() +
      stat_smooth(method = "lm", se = FALSE) +
      facet_grid(~VoltageRange)

其输出为: enter image description here

如您所见,刻面标签位置错误,标记为高压对应低压,反之亦然。

我该如何解决这个问题?我做错了什么?

1 个答案:

答案 0 :(得分:1)

评论道。我认为你的ggplot电话太复杂了#39;

require(read.so) #awesome package available on GitHub, by @alistaire47 
dat <- read_so() 
dat <- dat[c(1:3,8),] 

dat
# A tibble: 4 x 4
  Voltage Current lnI       VoltageRange
  <chr>   <chr>   <chr>     <chr>       
1 0.474   0.001   -6.907755 Low         
2 0.883   0.002   -6.214608 Low         
3 1.280   0.005   -5.298317 Low         
4 2.210   0.247   -1.398367 High 

ggplot(dat, aes(x = lnI, y = Voltage)) + # remove 'mapping', 
# and use only the object names, not the columns/ vectors
  geom_point() + 
  stat_smooth(method = "lm", se = FALSE) +
  facet_grid(~VoltageRange)

工作的: enter image description here

修改 如果要重新排列方面,请将参数分解并更改级别的顺序。您可以在数据框(我不建议)或直接在ggplot调用中执行此操作。为了做到这一点,我发现创建一个具有级别顺序的字符向量很好,因为你可能需要再次使用它。

facet_order <- c('Low', 'High') 
# note it's important that the levels are written exactly the same
ggplot(dat, aes(x = lnI, y = Voltage)) + 
      stat_smooth(method = "lm", se = FALSE) +
      facet_grid(~factor(VoltageRange, levels = facet_order))