r - 使用 stat ='count' 时使用 ggplot (geom_line) 分隔线

标签 r plot ggplot2

我目前有一些数据基本上是一个因素和一个日期。这是它的一个简化概念。

date <- c(1901,1901,1901,1902,1902,1902,1901,1903,1902,1904,1902,1903,1903,1904,1905,       1901,1903,1902,1904,1902,1902,1903,1904,1902,1902,1901,1903,1903,1904,1905, 1905,1906,1907,1908,1901,1908,1907,1905,1906,1902,1903,1903,1903,1904,1905,1901,1901,1901,1902,1902,1902,1901,1903,1902,1904,1902,1903,1903,1904,1905,
1901,1903,1902,1904,1902,1902,1903,1904,1902,1902,1901,1903,1903,1904,1905,
1905,1906,1907,1908,1901,1908,1907,1905,1906,1902,1903,1903,1903,1904,1905,
1905,1906,1907,1908,1901,1908,1907,1920,1920,1920,1921,1921,1921,1921,1921)

genre <- sample(c("fiction","nonfiction"),105,replace=TRUE)
data <- as.data.frame(cbind(date,genre))
# I know this is not an ideal way to coerce to a numeric 
data$date <- as.numeric(as.character(data$date))

到目前为止,还不错。但是,如果您绘制它,您会注意到,数据中存在很大的差距,被线条遮挡了。这个情节将说明。

library(ggplot2)
ggplot(data,aes(x=date,color=genre)) + geom_line(stat='count')

Example Plot 1.

我看过this post这建议添加一个组,我可以这样做。

data$group <- ifelse(data$date < 1910,1,2)
ggplot(data,aes(x=date,color=genre,group=group)) + geom_line(stat='count')

Example Plot 2

所以似乎没有办法保留我想要的输出颜色美感指定一个同时使用stat='计数'。例如,该图很好地显示了数据中的差距,但失去了基于 genre 因素的颜色/区别:

ggplot(data,aes(x=date,color=genre,group=group)) + geom_line(stat='count')

那么,这不可能吗?我错过了什么吗?有没有更好的方法来做到这一点,或者我是否需要总结或以其他方式改变我的日期,这样我就不会在绘图时依赖stat='count'阶段?

最佳答案

您可以将“genre”和“group”组合起来用作您的group 变量。在这里,我通过 interaction 函数执行此操作。

ggplot(data,aes(x = date, color = genre, group = interaction(genre, group))) + 
     geom_line(stat = 'count')

enter image description here

关于r - 使用 stat ='count' 时使用 ggplot (geom_line) 分隔线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46286267/

相关文章:

r - 在箱线图中绘制空组

matlab - 在 Matlab 的 for 循环中为子图创建注释框

r - 当 Shiny 的应用程序加载时强制更新输出

python - 在Python中绘制热图

python - 等高线图图例 - Matplotlib

r - 使用 ggplot2 手动着色置信区间

r - 当 hjust 和 vjust 是字符串时,为什么 geom_text() 会抛出强制错误?

r - 如何正确创建这种情节

使用 Caret 包的测试集的 ROC 曲线

r - 在 R 中有效地将多个字符串/关键字与多个文本匹配