如何绘制带有几个定性变量的ggplot + geom(line)?

时间:2019-12-03 12:53:10

标签: r ggplot2 dplyr mutate

我的数据属于调查类型,并且我想使用ggplot绘制图形。

例如

id 1具有护照,签证1和签证2。因此,我想分组o创建一个名为证件类型的变量,所有这些都是因为我想用几个系列绘制一个类型线图,该系列将是护照Visa1和Visa2。我真的不知道该怎么做。

请帮帮我。

ax = df.plot(secondary_y=['B'])
h,l = ax.get_legend_handles_labels()

1 个答案:

答案 0 :(得分:0)

您的数据看起来像是宽格式。对于ggplot2,您需要长格式。 以下是将二进制列(护照,签证1,签证2)收集到单个因子变量中的方法:http://www.cookbook-r.com/Manipulating_data/Converting_data_between_wide_and_long_format/

然后,您需要做的就是将新变量分配给ggplot2等美观的colourhttps://ggplot2.tidyverse.org/

我之所以没有发布代码,是因为我认为这些是整理和可视化数据的非常基础的知识,并且通过学习适当的教程可以更好地服务于OP。从链接的资源中综合必要的代码应该很容易。

另外,因为我不清楚OP要将其数据分组的确切程度,因此应针对哪些内容进行绘图...

编辑:

在我看来,从设计矩阵到整洁的格式还有另外一个步骤:制成长格式后,您必须消除所有在新建变量中包含NA的行。 / p>

我想我毕竟会发布一些代码。我不是您想要的那样,但是也许它将使您朝正确的方向思考。

DF <- data.frame(v1 = letters[1:10],
           v2 = sample(c(0,1), 10, replace=TRUE),
           v3 = sample(c(0,1), 10, replace=TRUE),
           v4 = rnorm(10, 100, 10))

##    v1 v2 v3        v4
## 1   a  0  1  80.87423
## 2   b  0  1 107.77500
## 3   c  0  0  99.93618
## 4   d  1  0  99.77675
## 5   e  0  0  93.72743
## 6   f  0  1 102.19122
## 7   g  0  0  89.06118
## 8   h  1  1 118.87512
## 9   i  0  0  98.09992
## 10  j  1  1 106.06299

library(tidyverse)

DF2 <- DF %>% 
  gather(key="newvar", value="category", c("v2", "v3")) %>%
  filter(category == 1) %>%
  select(-category) # don't need it anymore

##   v1        v4 newvar
## 1  d  99.77675     v2
## 2  h 118.87512     v2
## 3  j 106.06299     v2
## 4  a  80.87423     v3
## 5  b 107.77500     v3
## 6  f 102.19122     v3
## 7  h 118.87512     v3
## 8  j 106.06299     v3


ggplot(DF2, aes(x=v1, y=v4, colour=newvar, group=newvar)) +
  geom_line()

enter image description here