Поместить легенду внутри графика - PullRequest
0 голосов
/ 07 февраля 2020

Я пытаюсь построить сложную диаграмму набора глобальных данных о терроризме, доступную по следующей ссылке: https://www.kaggle.com/START-UMD/gtd Моя цель - поместить легенду внутри графика точно в правом нижнем углу и увеличьте общий размер участка, чтобы сделать его читаемым. Самым близким к моему намерению, которого мне удалось достичь, является составленный по следующему коду:

Библиотека, необходимая для этого участка

library(tidyverse)
library(ggplot)

Код:

terrorism %>% 
  group_by(weaptype1_txt, weapsubtype1_txt) %>% 
  summarise(nweapons = length(weaptype1_txt)) %>% 
  ungroup() -> dfw2

ggplot(data = dfw2, aes(x = reorder(weaptype1_txt,nweapons), y = nweapons, fill = weapsubtype1_txt)) +  
  geom_bar(aes(fill=weapsubtype1_txt), stat="identity", colour="white") +
  coord_flip() +
  theme_bw(base_size = 8)  +
   labs(title="Weapons type/subtype (1)", x ="Type of weapon used", y = "Number of events", fill = "Sub-type") + 
  theme(legend.position=c(0.8, 0.2))+
  theme(legend.title = element_text(size = 3), 
               legend.text = element_text(size = 3))

enter image description here

Мое намерение, конечно, состоит в том, чтобы не покрывать бары легендой. Большое спасибо за чтение и, надеюсь, за помощь.

1 Ответ

0 голосов
/ 07 февраля 2020

Рассматривали ли вы изменение сюжета?

Я предлагаю вам диаграмму Санки с networkD3. enter image description here

, которая сделана таким образом :

## maybe you must install some of packages first:
library(tidyverse)
library(viridis)
library(patchwork)
library(hrbrthemes)
library(circlize)
library(networkD3)

# filling no data columns wit "No Data"
dfw2$weapsubtype1_txt[dfw2$weapsubtype1_txt==""] <- "No Data"

#generating nodes (the unique type or subtype of weapon
nodes <- data.frame(name=unique(c(dfw2$weaptype1_txt, dfw2$weapsubtype1_txt)))

# correspondences are marked by number
dfw2$IDsource=match(dfw2$weaptype1_txt, nodes$name)-1 
dfw2$IDtarget=match(dfw2$weapsubtype1_txt, nodes$name)-1


# Make the Network
  san<- sankeyNetwork(Links = dfw2, Nodes = nodes,
                    Source = "IDsource", Target = "IDtarget",
                    Value = "nweapons", NodeID = "name",
                    sinksRight=FALSE,fontFamily="Source Sans Pro")
san
...