2

我希望使用ggplot2绘制一个线图,该线图由根据我的数据框中的特定列值分组的多条线组成。但是,存在 x 轴值没有点的情况,我想将 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。

4

2 回答 2

5

做这个:

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

在此处输入图像描述

于 2012-07-04T06:16:19.937 回答
1

制作一个带零的数据框并合并

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)

阴谋

于 2017-12-14T10:06:14.820 回答