是否可以使用第三个变量绘制两个变量作为R中的过滤器?

时间:2018-04-18 15:29:40

标签: r variables plot ggplot2

我正在尝试使用两个变量(DATEINT_RATE)创建一个图,使用过滤器第三个变量GRADE的内容。 问题是我无法弄清楚如何使用变量GRADE作为行的过滤器。

在下面的部分中,我提供了一个详细的起始数据样本以及我想要实现的绘图。 提前谢谢。

 STARTING DATA     

 | DATE  | INT_RATE | GRADE |
––––––––––––––––––––––––––––––
 | 1-jan | 5%       | A     | <-- A
 | 5-feb | 3%       | B     |
 | 9-feb | 2%       | D     |
 | 1-apr | 3%       | A     | <-- A
 | 5-jun | 5%       | A     | <-- A
 | 1-aug | 3%       | G     |
 | 1-sep | 2%       | E     |
 | 3-nov | 1%       | C     |
 | 8-dec | 8%       | A     | <-- A
 |   .   | .        | .     |
 |   .   | .        | .     |
 |   .   | .        | .     |

这就是我想要实现的图形,这是一个非常基本的图形,除了之前需要的过滤工作。

WANTED RESULT:

GRADE "A"

   INT_RATE
       |
       |
    8%-|                            •   
       |                           ̷
       |                        ̷ 
       |                     ̷
    5%-|  •              •
       |   \            /
       |     \        /
       |       \     /
       |         \ /
    3%-|          •
       |
       |  
       |
       |
    ––––––––––––––––––––––––––––––––––-–––>
       |  ˆ       ˆ      ˆ           ˆ   DATE
       |1-jan   1-apr   5-jun      8-dec

编辑1:

在@apax的宝贵帮助下,我设法获得了一个情节,但由于R显示它的奇怪方式,结果并不令人满意(我认为这可能与所讨论的数据集非常大的事实有关) 800k行)。你有什么建议吗?

malformed graph

顺便说一句,这解决了我的问题:

plot(x = DATE, y = INT_RATE, data =  filter(df, GRADE == "A"))

我还上传了格式错误的图表的PNG。 再次感谢所有人。

2 个答案:

答案 0 :(得分:2)

您可以使用ggplot2facet_wrap(...)

library(ggplot2)
ggplot(mtcars, aes(x=mpg, y=disp)) +
  geom_point() +
  facet_wrap(~cyl)

为您的数据

ggplot(data, aes(x=DATE, y=INT_RATE)) +
  geom_line() +
  facet_wrap(~GRADE)
  

P.S。这为所有等级提供了单独的图表。但那应该不是问题。

答案 1 :(得分:2)

这是一个快速的单行解决方案,我假设您的数据存储在名为df的对象

library(dplyr) ## For filter() function below

plot(x = DATE, y = INT_RATE, data =  filter(df, GRADE == "A"))