首页 文章

ggplot2 line和dot,auto zero value

提问于
浏览
2

我希望使用 ggplot2 绘制线图,该线由根据我的数据框中的特定列值分组的多条线组成 . 然而,存在没有x轴值的点的情况,我想将y轴y值分配给这样的场合,使得每条线对于每个x轴值具有点 .

假设我有一个data.frame,df

number value      state
1      1     4 California
2      2     1    Arizona
3      3     5 California
4      4     5    Arizona
5      5     2     Alaska
6      6     3    Arizona

其中列号是因子数据类型 .

我想绘制线图x轴=数字,y轴=值,并按状态分组 . 对于这个例子,

number value      state
1          4 California
3          5 California

加利福尼亚的线只会连接1和3之间跳过2而不会持续到6 .

2 回答

  • 5

    使用零和合并创建数据框

    library(tidyverse)
    
    df = data.frame("number"=c(1:6), value=c(4,1,5,5,2,3), state=c("California", "Arizona", "California", "Arizona", "Alaska", "Arizona")) %>% 
       tbl_df()
    
    states = unique(df$state)
    numbers = unique(df$number)
    
    df2 = data.frame(state = sort(rep(states, length(numbers))),
                     number = rep(numbers, length(states)))
    
    pd = df2 %>%
      merge(df, all=T) %>%
      mutate(value = ifelse(is.na(value),0,value))
    
    plot1 = ggplot(pd, aes(number, value, colour=state)) + 
      geom_line(size=2)+
      geom_point(size=5)
    
    plot(plot1)
    ggsave(filename = "plot.png", plot = plot1)
    

    plot

  • 1

    做这个:

    ggplot(x, aes(number, value, colour=state)) + 
      geom_line(size=2) + geom_point(size=5)
    

    enter image description here

相关问题