r - 如何将此 ggplot2 条形图转换为线图?

标签 r ggplot2

我有一个在 x 轴上具有离散有序因子的数据集。我想将呈现从条形图更改为折线图(以 geom_freqpoly 的样式)。我不能直接使用 geom_freqpoly 因为我已经聚合了数据,而且我不知道如何将统计数据从 stat = "bin" 更改为 stat = "身份"。我怎样才能做到这一点?

这是数据:

temp <- structure(list(wday = structure(c(1L, 1L, 2L, 2L, 3L, 3L, 4L, 
4L, 5L, 5L, 6L, 6L, 7L, 7L), .Label = c("Monday", "Tuesday", 
"Wednesday", "Thursday", "Friday", "Saturday", "Sunday"), class = c("ordered", 
"factor")), splitter = c(FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, 
FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE), N = c(250245, 
40845, 209685, 45946, 200983, 49403, 142869, 52212, 88589, 48175, 
51061, 25317, 84012, 7994), price1 = c(22.79, 70.20, 35.92, 87.66, 
48.98, 55.37, 22.56, 88.50, 26.12, 63.29, 35.88, 73.79, 33.12, 82.80
)), .Names = c("wday", "splitter", "N", "price1"), class = "data.frame", 
row.names = c(NA, -14L))

这是情节:

ggplot(melt(temp,id.vars = c("wday","splitter")), 
  aes(x = wday, y = value, fill = splitter)) + 
  geom_bar(stat = "identity", position = "dodge") + 
  facet_grid(variable ~ ., scale = "free_y")

虽然我认为下面的代码可以工作,但它并没有:

ggplot(melt(temp,id.vars = c("wday","splitter")), 
  aes(x = wday, y = value, colour = splitter)) + 
  geom_point() + geom_line() +
  facet_grid(variable ~ ., scale = "free_y")

最佳答案

问题是缺少群体审美。函数 geom_line 使用因子作为默认分组变量(此处为 wdaysplitter),因此每个组都是一个数据点。在 aes 中指定分组会根据需要呈现行:

ggplot(melt(temp,id.vars = c("wday","splitter")), 
  aes(x = wday, y = value, colour = splitter, group = splitter)) + 
  geom_point() + geom_line() +
  facet_grid(variable ~ ., scale = "free_y")

Now with lines!

关于r - 如何将此 ggplot2 条形图转换为线图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18476047/

相关文章:

R:提交按钮和条件面板

r - ggplot2:geom_point 有时会根据使用的审美删除 NA 值

r - ggplot 函数在图例下方添加文本

r - ggplot2:模糊的方面标签

r - 连接 R 中的多个数学表达式

r - 以 png 格式保存高分辨率绘图

r - 将 `dimnames` 分配给列表中的所有矩阵时出错

R- shiny-plotly 第二轴标签与 yaxis 值重叠

R ggplot : Can't change y-axis scale range with facetted plot

r - geom_segment() x轴上不同的起始值