【发布时间】:2017-09-25 15:44:12
【问题描述】:
我正在尝试使用 ggplot 创建一个类似NYTimes 中生成的图表:
我想我已经接近了,但我不太确定如何分离出一些数据,以便获得正确的视图。我的数据是如下所示的政治职位持有人:
name,year_elected,year_left,years_in_office,type,party
Person 1,1969,1969,1,Candidate,Unknown
Person 2,1969,1971,2,Candidate,Unknown
Person 3,1969,1973,4,Candidate,Unknown
Person 4,1969,1973,4,Candidate,Unknown
Person 5,1971,1974,3,Candidate,Unknown
Person 1,1971,1976,5,Candidate,Unknown
Person 2,1971,1980,9,Candidate,Unknown
Person 6,1973,1978,5,Candidate,Unknown
Person 7,1973,1980,7,Candidate,Unknown
Person 8,1975,1980,5,Candidate,Unknown
Person 9,1977,1978,1,Candidate,Unknown
我已经使用下面的代码非常接近这个视图,但我认为我遇到的一个问题是不正确地绘制线段(例如,我似乎没有每个候选者都有一个片段),或者片段重叠/堆叠。我遇到的关键问题是我的公职人员名单大约有 60 人,但我的图表只画了大约 28 条线。
library(googlesheets)
library(tidyverse)
# I'm reading from a Google Spreadsheet
data <- gs_title("Council Members")
data_sj <- gs_read(ss = data, ws = "Sheet1")
ggplot(data, aes(year_elected, years_in_office)) +
geom_segment(aes(x = year_elected, y = 0,
xend = year_left, yend = years_in_office)) +
theme_minimal()
上面的代码给了我:
提前感谢任何指点!
【问题讨论】:
-
两种处理重叠的方法。 1) 使用实际的选举和离开日期,而不是分箱到整数年。 2)使用带有结束标记的半透明线来显示每个人。对于垂直部分,使用与 1) 相同的技术,这样当某人在同一年进出办公室时,他们仍然有两个不同的 x 值。
-
@JasonHeppler 你有确切的日期(不是四舍五入到年份)吗?
-
感谢您的建议。不幸的是,我没有确切的日期,但我也担心即使我这样做了,问题也可能会持续存在,因为这些是市议会席位,并且有时会有一组成员同时被投票或投票。这可能会继续导致我看到的问题。
-
我想我可以设置自己的“抖动”,并在重复年份之间添加一点日或月填充。我只是希望有一些方法可以解决这个问题,这并不意味着以奇怪的方式弄乱数据。