我的数据属于调查类型,并且我想使用ggplot绘制图形。
例如
id 1具有护照,签证1和签证2。因此,我想分组o创建一个名为证件类型的变量,所有这些都是因为我想用几个系列绘制一个类型线图,该系列将是护照Visa1和Visa2。我真的不知道该怎么做。
请帮帮我。
ax = df.plot(secondary_y=['B'])
h,l = ax.get_legend_handles_labels()
答案 0 :(得分:0)
您的数据看起来像是宽格式。对于ggplot2,您需要长格式。 以下是将二进制列(护照,签证1,签证2)收集到单个因子变量中的方法:http://www.cookbook-r.com/Manipulating_data/Converting_data_between_wide_and_long_format/
然后,您需要做的就是将新变量分配给ggplot2
等美观的colour
。 https://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()