Расширить geom_voronoi за его пределы с масштабом _ * _ непрерывного - PullRequest
2 голосов
/ 02 ноября 2019

Задача, которую я перед собой поставил, состоит в том, чтобы составить диаграмму voronoi диаграммы www.politicalcompass.org для действующих в настоящее время демократических кандидатов. Я закодировал их позиции и объединил точки, которые пересекаются в отдельные наблюдения. Я использовал два отдельных ggplot расширения, которые создают диаграммы вороной.

Проблема в том, что график politcompass.org идет от -10 до +10 по обеим осям. Когда я пытаюсь построить диаграммы вороного, они распространяются только на их исходные пределы, а не на весь диапазон от -10 до 10, который я собираюсь построить. Примеры и код ниже:

https://github.com/McCartneyAC/average_of_polls/blob/master/stupid_voronoi_one.png?raw=true

https://github.com/McCartneyAC/average_of_polls/blob/master/stupid_voronoi_two.png?raw=true

library(tidyverse)
library(ggrepel)

candidates_list_voronoi <-  tribble(
  ~candidate,~party,~economic,~authoritarian,
  "Bennet","Democratic",8.5,6,
  "Biden","Democratic",5.5,3.5,
  "Booker","Democratic",4,2.5,
  "Buttigieg/Castro","Democratic",6.5,4.5,
  "Delaney","Democratic",4,3.5,
  "Gabbard","Democratic",-1.5,-1.5,
  "Harris","Democratic",5,4,
  "Bullock/Klobuchar","Democratic",5,5,
  "Sanders","Democratic",-1.5,-1,
  "Sestak","Democratic",5.5,2,
  "Warren","Democratic",0.5,1,
  "Williamson","Democratic",2,-1.5,
  "Yang","Democratic",7,1,
  "Hawkins","Green",-5,-3,
  "Vohra","Libertarian",10,1.5,
  "Corker/Pence","Republican",10,8.5,
  "Hogan","Republican",10,8,
  "Kasich","Republican",8,9,
  "Trump","Republican",8.5,8.5,
  "Weld","Republican",9.5,4.5
)


library(ggvoronoi)
candidates_list_voronoi %>% 
  ggplot(aes(economic, authoritarian, label = candidate, fill = candidate)) +
  geom_voronoi(color = "black") +
  geom_label_repel(fill = "#FFFFFF") + 
  scale_x_continuous(limits = c(-10,10))+ 
  scale_y_continuous(limits = c(-10,10))


library(ggforce)
candidates_list_voronoi %>% 
  ggplot(aes(economic, authoritarian)) +  
  geom_voronoi_tile(aes(fill = candidate, group = -1L)) +
  geom_voronoi_segment() +
  geom_label_repel(aes(label = candidate)) + 
  scale_x_continuous(limits = c(-10,10))+ 
  scale_y_continuous(limits = c(-10,10))

1 Ответ

2 голосов
/ 02 ноября 2019

Вы можете указать ограничивающий прямоугольник в аргументе outline в geom_voronoi (см. Пример виньетки здесь ).

outline.df <- data.frame(x = c(-10, 10, 10, -10),
                         y = c(-10, -10, 10, 10))

candidates_list_voronoi %>% 
  ggplot(aes(economic, authoritarian, fill = candidate)) +
  geom_voronoi(outline = outline.df,
               color = "black")

(Оставляя часть меток, так как она некритически важно для вопроса.)

enter image description here

...