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

时间:2020-02-05 02:20:11

标签: r ggplot2 bar-chart yaxis

我是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 个答案:

答案 0 :(得分:1)

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

enter image description here