Значение неправильно отображается на оси Y с помощью GGPLOT - PullRequest
1 голос
/ 05 февраля 2020

Я новичок в R и у меня очень простой код. Я пытаюсь создать диаграмму с 2 переменными и 6 наблюдениями; Тем не менее, данные отображаются неправильно. Объединенное значение для MAYBE равно 5,9, объединенное значение для NO равно 5,3, а объединенное значение для YES равно 5,3. Категории MAYBE и NO могут отображаться правильно; однако, ДА, кажется, показывает 3.2, а не 5.3. Можете ли вы просмотреть и сообщить, что может быть не так с моим кодом.

library(tidyverse)

xaxis_data <- c("YES","NO","MAYBE")

yaxis_data <- c(2.1,1.6,3.4,3.2,3.7,2.5)

data_to_plot <- data.frame(cbind(xaxis_data,yaxis_data),stringsAsFactors = FALSE)

ggplot(data=data_to_plot) +
  geom_bar(mapping=aes(x = xaxis_data,y=yaxis_data,fill = xaxis_data),stat="identity")[enter image description here][1]

enter image description here

1 Ответ

1 голос
/ 05 февраля 2020

Проблема в том, что cbind преобразуется в matrix, а матрица может иметь только один класс. xaxis_data - это класс character, и он преобразует всю матрицу в character. Вместо этого мы можем просто построить с data.frame.

data_to_plot <- data.frame(xaxis_data,yaxis_data,stringsAsFactors = FALSE)
str(data_to_plot)
#'data.frame':  6 obs. of  2 variables:
#$ xaxis_data: chr  "YES" "NO" "MAYBE" "YES" ...
#$ yaxis_data: num  2.1 1.6 3.4 3.2 3.7 2.5

Если мы используем cbind с data.frame

str(data.frame(cbind(xaxis_data,yaxis_data),stringsAsFactors = FALSE))
'data.frame':   6 obs. of  2 variables:
#$ xaxis_data: chr  "YES" "NO" "MAYBE" "YES" ...
#$ yaxis_data: chr  "2.1" "1.6" "3.4" "3.2" ... ### character class

Используя код ОП

library(ggplot2)
ggplot(data=data_to_plot) + 
    geom_bar(mapping=aes(x = xaxis_data,y=yaxis_data, 
         fill = xaxis_data),  stat="identity")

enter image description here

...