Нарисуйте круг цветом в соответствии с его плотностью (частотой)

Я бросаю мяч и каждый раз записываю расстояние между мячом и собой. Я могу нарисовать график плотности в соответствии с расстоянием мяча от меня. Тем не менее, я хотел бы нарисовать круг с его радиусом как максимальное расстояние броска.

Кроме того, я хотел бы использовать цветовой градиент для представления области с разной частотой подсчета мячей (как график плотности).

Как я могу добиться этого с помощью R?


person Bing-Hong Huang    schedule 16.05.2019    source источник
comment
график плотности ggplot с coord_polar?   -  person zx8754    schedule 16.05.2019
comment
Например, я использую mtcars в качестве примера. plot(density(mtcars$mpg)) Я могу получить график плотности с данными mpg. Я хотел бы нарисовать концентрический круг градиента цвета. Так же, как этот круг [ссылка]изображение .shutterstock.com/image-illustration/ Самая темная часть — наиболее частое положение шара.   -  person Bing-Hong Huang    schedule 16.05.2019


Ответы (2)


Вы можете использовать geom_segment с coord_polar (для этого вам придется предварительно рассчитать плотность самостоятельно).

library(ggplot2)
# Lets calculate frequency of how far is the ball
d <- density(chickwts$weight)
# Here x is weight (or distance for OP) and y is frequency
pd <- data.frame(distance = d$x, frequency = d$y)

ggplot(pd, aes(x = 1, xend = 2, y = distance, yend = distance, color = frequency)) +
  geom_segment(stat = "identity") +
  coord_polar() +
  scale_color_viridis_c() +
  labs(
    title = "How far is the ball",
    x = "Distance",
    y = "Distance",
    color = "Frequency"
  ) +
  theme_classic() +
  theme(axis.text.x = element_blank())

введите здесь описание изображения

Если необходима категориальная группировка, можно использовать это:

# Check if frequency is within wanted range
pd$color <- pd$frequency > 0.002 & pd$frequency < 0.003    
ggplot(
  pd,
  aes(x = 1, xend = 2, y = distance, yend = distance, color = color)
) +
  geom_segment(stat = "identity") +
  coord_polar() +
  scale_color_viridis_d() +
  labs(
    title = "How far is the ball",
    x = "Distance",
    y = "Distance",
    color = "Frequency"
  ) +
  theme_classic() +
  theme(axis.text.x = element_blank())

person pogibas    schedule 16.05.2019

Используя mtcars в качестве примера данных, нарисуйте плотность, а затем преобразуйте ее в полярную:

library(ggplot2)

ggplot(mtcars, aes(mpg)) +
  geom_density() +
  coord_polar()

введите здесь описание изображения

person zx8754    schedule 16.05.2019