gpt4 book ai didi

r - 显示方位和距离的圆图

转载 作者:行者123 更新时间:2023-12-04 11:45:40 27 4
gpt4 key购买 nike

我试图显示个人离开站点的方位和 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 值放在底部)。另外,我仍在寻找将第一个图中的点连接到中心点的解决方案。

最佳答案

你在寻找这样的东西吗?

illustration

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 轴的对数刻度感兴趣,我添加了一个小的正值):

  • cartesian form
    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 值请参见下图)在更理论的层面上,我认为对数刻度在我们比较大范围的数量时是合适的,而这里的情况并非如此。

  • illustrations with different yend values
    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/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com