【问题标题】:R and ggplot2: how do I connect the dots for a line chart and polar coordinates?R和ggplot2:如何连接折线图和极坐标的点?
【发布时间】:2014-10-04 13:12:41
【问题描述】:

正如我的同事所指出的,连接点是他们在小学教的东西。

这是数据:

hour_timetable  mean_delayed_pass
0   6.074
1   6.512
2   7.632
3   9.393
4   8.759
5   4.600
6   6.040
7   5.575
8   5.680
9   6.315
10  6.895
11  7.852
12  6.832
13  6.961
14  6.322
15  5.954
16  5.579
17  5.540
18  5.142
19  5.579
20  6.139
21  6.501
22  6.140
23  6.061

这里是代码:

library(ggplot2)
ggplot(data = test_vis, aes(x = factor(hour_timetable), y = mean_delayed_pass, group = 1)) + 
   ylim(0, NA) + 
   geom_point(color = 'purple', stat = 'identity') + 
   geom_line(color = 'purple') + 
   coord_polar(start = -0.12) # why offset?

【问题讨论】:

  • 如果您将hour_timetable 保留为数字变量,而不是因子,您将获得一个没有偏移的连通图。添加scale_x_continuous(breaks=0:22) 以获取所有小时网格线。
  • 第24个数据点去哪了?
  • 由于hour_timetable=0 可能也是“第 24 小时”,您需要将 24 6.074 作为新行添加到数据中,这样第 23 小时就不会被解释为同一时间点为 0。对不起,忘了提。可能有一种更优雅的方式来处理数据的周期性,但至少它有效。

标签: r ggplot2 visualization


【解决方案1】:

使用geom_polygon() 而不是geom_line()。您可以使用geom_polygon(..., fill=NA) 为多边形设置空填充。

试试这个:

library(ggplot2)
ggplot(data = test_vis, aes(x = factor(hour_timetable), y = mean_delayed_pass, group = 1)) + 
  ylim(0, NA) + 
  geom_point(color = 'purple', stat = 'identity') + 
  geom_polygon(color = 'purple', fill=NA) + 
  coord_polar(start = - pi * 1/24)


要将零点放在图的顶部,请使用offset = - pi / 24

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-08
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    • 2018-05-08
    相关资源
    最近更新 更多