使用 GGPLOT 值未在 Y 轴上正确映射

Value not mapping correctly on Y axis using GGPLOT

我是 R 新手,代码非常简单。我正在尝试创建一个包含 2 个变量和 6 个观察值的条形图;但是,数据似乎绘制不正确。 MAYBE 的组合值为 5.9,NO 的组合值为 5.3,YES 的组合值为 5.3 类别 MAYBE 和 NO 似乎显示正确;然而,YES 似乎显示 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]

问题是 cbind 转换为 matrix 并且矩阵只能有一个 class。 xaxis_datacharacter class,它将整个矩阵转换为 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

如果我们使用 cbinddata.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

使用 OP 的代码

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