ggplot:多变量(多连续变量)绘图

sun*_*ad1 1 r ggplot2

使用较大数据推断出的数据dplyr显示了有关2013年和2014年四个季度总销售额的信息.

    Quarter  X2013       X2014    Total.Result
1   Qtr 1   77282.13    66421.10    143703.2
2   Qtr 2   69174.64    76480.13    145654.8
3   Qtr 3   65238.47    79081.74    144320.2
4   Qtr 4   65429.73    109738.82   175168.5
Run Code Online (Sandbox Code Playgroud)

我希望ggplot通过比较条形图上的两年和每个季度的条形图组来绘制下面的条形图,如下所示.(来自MS Excel的输出)

在此输入图像描述

我使用的ggplot语句如下所示(我可能错了)

ggplot(qtr2, aes(x=as.factor(Quarter),fill=c(X2013,X2014))) +
    geom_bar(position="dodge")
Run Code Online (Sandbox Code Playgroud)

我收到一个错误

Error: Aesthetics must either be length one, or the same length as the dataProblems:as.factor(Quarter)
Run Code Online (Sandbox Code Playgroud)

EDi*_*EDi 5

您需要将数据转换为ggplot的长格式:

require(ggplot2)
require(reshape2)
df <- read.table(header = TRUE, text = 'R    Quarter  X2013       X2014    Total.Result
1   Qtr 1   77282.13    66421.10    143703.2
2   Qtr 2   69174.64    76480.13    145654.8
3   Qtr 3   65238.47    79081.74    144320.2
4   Qtr 4   65429.73    109738.82   175168.5')
df$R <- NULL
head(df)

# bring to long data (1)
dfm <- melt(df, id.vars = c('Quarter', 'Total.Result'))
dfm


ggplot(dfm, aes(x = factor(Quarter), y = value, fill = variable) ) +
  geom_bar(stat="identity", position = 'dodge')
Run Code Online (Sandbox Code Playgroud)

关于总结果列/栏:我不知道这些数据应该来自哪里(丢失?) - 只有一列,但有两个栏?价值观不合适.如果你告诉我如何生成这些,那么绘图应该没问题.