我正在尝试从数据框创建堆叠式条形图,填充是数据框的行名,而y是数据框的colSums和x数据框的colnames。但是,我遇到了错误:
“错误:美学的长度必须为1或与数据(3)相同:x,y”
请问您如何解决?先感谢您。
library(ggplot2)
df2<-data.frame(c(1000,700,500),c(2000,1500,1000))
rownames(df2)<-c("Revenue", "EBITDA", "EBIT")
colnames(df2)<-c("2020", "2021")
ggplot(data=df2, aes(x=colnames(df2), y=colSums(df2), fill=rownames(df2)))
答案 0 :(得分:1)
library(tidyverse)
# example data
df2<-data.frame(c(1000,700,500),c(2000,1500,1000))
rownames(df2)<-c("Revenue", "EBITDA", "EBIT")
colnames(df2)<-c("2020", "2021")
# reshape dataset
df2_upd = df2 %>% rownames_to_column("x") %>% gather(year, value, -x)
# plot using the new dataset
ggplot(data=df2_upd, aes(x=year, y=value, fill=x)) + geom_col()
您需要一个“整洁”的数据集来创建此图(即,您要使用的每个变量都应有自己的列)。
因此,首先,您需要添加一个具有行名的列,以便将它们用作变量,然后重塑数据集,以便在一列中包含您的2个不同年份(2020年,2021年),以及对应的实际第三列中的值。