我是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]
答案 0 :(得分:1)
问题是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
使用OP的代码
library(ggplot2)
ggplot(data=data_to_plot) +
geom_bar(mapping=aes(x = xaxis_data,y=yaxis_data,
fill = xaxis_data), stat="identity")