如何根据R中的rowid在一个图形中绘制两列

时间:2019-06-02 10:56:03

标签: r

我只想绘制数据框中的某些列,但我不知道该怎么做,也不能排除没有参与绘制的行。

这就是数据的样子:

txt <- "
PM10  PM25 Month row color
1     73  15.5     1   1 black
2     57  12.3     1   2 black
3     22   5.8     1   3 black
4     16   5.2     1   4 black
5     32   9.3     1   5 black
6     42   8.5     1   6 black
7    120  21.5     1   7 black
8     70  18.1     1   8 black
9     14   6.2     1   9 black
10    12   5.0     1  10 black
11    16   4.5     1  11 black
12    15   5.2     1  12 black
13    40   6.4     1  13 black
14    61  10.0     1  14 black
15    74   9.5     1  15 black
16   145  12.8     1  16 black
17    58   6.7     1  17 black
18    36   4.6     1  18 black
19    35   2.8     1  19 black
20    43   4.5     1  20 black
21    73   7.5     1  21 black
22    40   3.7     1  22 black
23    33   5.1     1  23 black
24    32   4.2     1  24 black
25    47  12.5     1  25 black
26    79  22.3     1  26 black
27    72  16.0     1  27 black
28    44  15.0     1  28 black
29    38   9.3     1  29 black
30    35   7.0     1  30 black
31    24   6.3     1  31 black
32    82  67.0     2  32 black
33   166 157.0     2  33 black
34    68  56.0     2  34 black
35    87  72.0     2  35 black
36    58  47.0     2  36 black
37    30  24.0     2  37 black
38    52  42.0     2  38 black
39    18  12.0     2  39 black
40    37  31.0     2  40 black
41    51  43.0     2  41 black
42    65  53.0     2  42 black
43    71  59.0     2  43 black
44   144 121.0     2  44 black
45   131 112.0     2  45 black
46   117 109.0     2  46 black
47    31  23.0     2  47 black
48    59  41.0     2  48 black
49   123 104.0     2  49 black
50    96  81.0     2  50 black
51   145 113.0     2  51 black
52    99  76.0     2  52 black
53    86  68.0     2  53 black
54    91  72.0     2  54 black
55    39  31.0     2  55 black
56    40  32.0     2  56 black
57    61  55.0     2  57 black
58    82  61.0     2  58 black
59   111  95.0     2  59 black
60    57  45.0     3  60 black
61    29  16.0     3  61 black
62    33  22.0     3  62 black
"
df <- read.table(textConnection(txt), header = TRUE)

一些代码准备锻炼我的数据框:

df <- data.frame(data)
df$Month <- as.numeric(format(data$date,format="%m"))
df <- df %>% select("PM10","PM25","Month") ##%>% mutate(row=row_number())
df$color <- 'black'

问题是我可以轻松地将它们绘制在两个不同的图中

plot (df$PM10)
par(new=TRUE)
plot (df$PM25)

但我需要将它合而为一...

以这种方式绘制图像时:

plot(df)

用每一列进行绘制,我只想显示PM10PM25,作为将以成对形式显示的每个rowid的值。

因此,我只想绘制具有PM10点和PM25点的图,并且每个点都将附加到rowid。我该怎么办?

1 个答案:

答案 0 :(得分:1)

如果您正在使用软件包dplyr准备数据,请尝试使用软件包ggplot2绘制图形。

我在Month == 12中添加了一些行,因为问题的数据中没有任何行。见结尾。

df2 <- df %>% 
  mutate(color = ifelse(Month == 12, "red", as.character(color)),
         color = factor(color, labels = c("Other", "12")),
         x = row_number())

ggplot(df2, aes(x = x, colour = color)) +
  geom_point(aes(y = PM10)) +
  geom_point(aes(y = PM25)) +
  scale_color_manual(name = "Month", values = unique(df2$color))

enter image description here

使用Month == 12的新数据。

sp <- split(df, df$Month)[[1]]
sp[['Month']] <- 12
sp[['PM10']] <- jitter(sp[['PM10']])
sp[['PM25']] <- jitter(sp[['PM25']])
df <- rbind(df, sp)