Справка по графику - Круговой график - PullRequest
2 голосов
/ 04 марта 2020

Я понятия не имею, с чего начать. Я посмотрел на GGPlot и заговорил et c, чтобы попытаться найти правильную вещь, но ничего не нашел.

Это пример моих данных, хотя

Skill <- c("Tackling", "Shooting", "Technique", "Passing", "Pace", "Stamina")
Grade <- c("A", "C", "C", "B", "A", "B")
data <- data.frame(Skill, Grade)

Это такой график, который я хотел бы enter image description here

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

, поэтому, если оценка равна D, она будет просто показывать красный цвет, если оценка будет C, она будет показывать красный и оранжевый цвета. Et c.

Ответы [ 3 ]

3 голосов
/ 04 марта 2020

Это довольно близко к тому, что вы хотите:

Skill <- c("Tackling", "Shooting", "Technique", "Passing", "Pace", "Stamina")
Grade <- c("A", "C", "C", "B", "A", "B")
data <- data.frame(Skill, Grade)

library(ggplot2)
library(dplyr)

data$grade <- factor(data$Grade, levels=c("D","C","B","A"))
data$grade2 <- recode(data$grade, A="B")
data$grade3 <- recode(data$grade2, B="C")
data$grade4 <- recode(data$grade3, C="D")

ggplot(data, aes(x=Skill, y=grade)) + 
  geom_bar(stat="identity", fill="green",col="black",width=1)  + 
  geom_bar(aes(y=grade2),stat="identity", fill="yellow",col="black",width=1)  + 
  geom_bar(aes(y=grade3),stat="identity", fill="orange",col="black",width=1)  + 
  geom_bar(aes(y=grade4),stat="identity", fill="red",col="black",width=1)  + 
  scale_y_discrete(limits = c("D","C","B","A")) + 
  coord_polar(start = pi/6) + theme_bw() + theme(axis.text.y = element_blank()) + 
  theme(axis.ticks = element_blank(), axis.title = element_blank()) 


enter image description here

1 голос
/ 04 марта 2020

Как насчет этого

library(ggplot2)

ggplot(data = data, aes(Skill, Grade, fill = Grade)) + 
      geom_tile() +
      coord_polar() +
      theme_bw()

Чтобы кодировать все уровни ниже уровня, вам необходимо иметь все эти более низкие уровни в пределах dataframe, который в некотором смысле избыточен. Не было бы?

0 голосов
/ 04 марта 2020
d = transform(data, gr = as.numeric(factor(data$Grade, c("D", "C", "B", "A"))))
d = do.call(rbind, lapply(split(d, d$Skill), function(x){
    foo = with(x, setNames(data.frame(Skill[1], Grade[1], seq(gr)), names(x)))
}))

library(ggplot2)
ggplot(d, aes(Skill, gr, fill = factor(gr, 4:1))) +
    geom_col() +
    coord_polar()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...