我试图显示个人离开站点的方位和 1 天内行进的距离,以及在不同方位行驶的人数。
目前,我可以在 ggplot2 中制作这些基本图:
# distance & bearing
ggplot(data=df,
aes(bear, dist)) +
geom_point() +
scale_y_log10()
# no. individuals & bearing
ggplot(data=df.postDepDT,
aes(bear)) +
geom_histogram(bins = 36)
#my data looks like the following
bear <- c(-172, -175, -160, -155, -150, -10, 23, 87, 122, 179)
dist <- c(5, 101, 326, 47, 23, 55, 6, 7, 44, 162)
df <- data.frame(bear, dist)
我希望我的最终情节有两个面板。第一个是一个圆,具有不同长度(指示距离)的点,沿轴承方向从圆向外辐射。这些点将沿着轴承连接到圆。第二个是围绕圆的直方图,显示沿每个方位远离圆的个体数量。
在这些图中,0o(或北)在顶部 -180o/180o(南)在底部,-90o 和 90o(西和东)分别在左侧和右侧。
更新:
将 coord_polar() 添加到图形有助于制作圆形图形,但是,我仍然无法在图形顶部获得 0o 值(对于北)(start=0 将 0o 值放在底部)。另外,我仍在寻找将第一个图中的点连接到中心点的解决方案。
最佳答案
ggplot(data=df,
aes(bear, dist)) +
geom_segment(aes(xend = bear, yend = 0.1)) +
geom_point() +
scale_x_continuous(limits = c(-180, 180),
breaks = seq(-180, 180, 90)) +
# scale_y_log10() +
coord_polar(start = pi) +
theme_bw()
说明 :
geom_segment()
期待 x
的美学, y
, xend
, & yend
. “pre- coord_polar
”版本的带有从中心辐射的线条的圆形图表应该是笛卡尔坐标系中的图表,线条垂直下降以与 x 轴相交,因此我们希望每个 xend
值与 x
相同值,每个 yend
值尽可能小(距离为 0,但由于您对 y 轴的对数刻度感兴趣,我添加了一个小的正值):ggplot(data=df,
aes(bear, dist)) +
geom_segment(aes(xend = bear, yend = 0.1)) +
geom_point() +
scale_x_continuous(limits = c(-180, 180),
breaks = seq(-180, 180, 90)) +
# scale_y_log10() +
# coord_polar(start = pi) +
theme_bw()
coord_polar()
对其 start
的期望如下参数(强调):offset of starting point from 12 o'clock in radians
由于您的轴承的实际值在
c(-175, 179)
中范围,我希望你的规模是 c(-180, 180)
.默认start = 0
将因此放置 -180/180
在 12 点钟位置。放置0
在 12 点钟位置,设置 start = pi
,这是 180 度的弧度。yend
选择一个任意小的正值可能导致同一点看起来与中心的距离不同。 (一些 yend
值请参见下图)在更理论的层面上,我认为对数刻度在我们比较大范围的数量时是合适的,而这里的情况并非如此。 p <- ggplot(data=df,
aes(bear, dist)) +
geom_point() +
scale_x_continuous(limits = c(-180, 180),
breaks = seq(-180, 180, 90)) +
scale_y_log10() +
coord_polar(start = pi) +
theme_bw()
gridExtra::grid.arrange(
p + geom_segment(aes(xend = bear, yend = 1)) + ggtitle("yend = 1"),
p + geom_segment(aes(xend = bear, yend = 0.1)) + ggtitle("yend = 0.1"),
p + geom_segment(aes(xend = bear, yend = 0.01)) + ggtitle("yend = 0.01"),
p + geom_segment(aes(xend = bear, yend = 0.001)) + ggtitle("yend = 0.001"),
nrow = 2
)
关于r - 显示方位和距离的圆图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54132850/