使用 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_data
是 character
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
如果我们使用 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")
我是 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_data
是 character
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
如果我们使用 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")