r - ggplot polar_coord 更好地分隔文本
问题描述
我在数据框中有一些数据times.posix
。由于是时间数据,我想将其可视化为圆形直方图。我的代码是这样的:
ggplot(times.posix) +
geom_histogram(aes(x = pct.hour(dropoff.posix) ), bins = 24, color = 'black', fill = 'blue') +
scale_x_continuous(breaks = 0:23, labels = paste( (11:(11+11) )%%12 + 1, c(rep('AM',12), rep('PM', 12) ) ) ) +
ggtitle('Dropoff time frequency') +
coord_polar()
我的图表最终是这样的
实际的 geom_hist 最终结果很好,但它周围的文本间隔很奇怪——标签从上午 12 点开始看起来还不错,但到晚上 11 点它们已经落后了一个完整的街区。有人知道怎么修这个东西吗?
解决方案
您的问题似乎与pct.hour
功能有关。我不确定这个函数是什么,因为问题中没有包含所需的库,而且我在网上找不到任何文档。
如果您改为使用lubridate::hour
,问题似乎消失了:
ggplot(times.posix) +
geom_histogram(aes(x = lubridate::hour(dropoff.posix)),
bins = 24,
color = 'black',
fill = 'blue') +
scale_x_continuous(breaks = 0:23,
labels = paste((11:(22)) %% 12 + 1, c(rep('AM', 12), rep('PM', 12)))) +
ggtitle('Dropoff time frequency') +
coord_polar()
但是,如果 x 的任何值为 24,我可以复制您不想要的图,例如:
geom_histogram(aes(x = lubridate::hour(dropoff.posix) * 24/23))
给
所以我的猜测是,如果你这样做,max(pct.hour(times.posix$dropoff.posix))
你会得到 24,什么时候应该是 23。如果你让我们知道pct.hour()
函数是什么,也许我们可以帮助找出问题的真正所在。
使用的数据
set.seed(69)
times.posix <- data.frame(dropoff.posix = as.POSIXct("2020-03-13") + 60 * runif(500,0,1440))
推荐阅读
- sql - 我可以在 DB2 中找到包含某个列的所有存储过程吗?
- javascript - 如何通过嵌套表单字段的值更新数据对象
- python - python套接字服务器中的客户端线程
- c# - 如果内容不合适,XtraReports 分页?
- linux - sh 奇怪的命令输出 - vscode 远程 ssh
- c++ - NSight Compute - 预期银行冲突但未检测到任何
- c# - 扩展器不显示包含下划线的标题
- linux - Linux Shell“粘贴”命令 - 保证基于行的交错?
- javascript - 在选择选项中更改图像
- git - 错误 /opt/stack/devstack/functions-common:629 git 调用失败:git clone https://opendev.org/openstack/requirements.git