ggplot2饼图出错

时间:2013-08-15 10:34:21

标签: r ggplot2 sqldf

我正在使用以下代码创建一个带有ggplot2的饼图,其中包含两个彼此相邻的饼图:每个值为“MotT”。每个饼图需要如何为每个“模型”的比例。这是我的代码:

library(ggplot2)
library(sqldf)


df <- data.frame("MorT" = c(1,2,1,2), "Model" = c(1,1,2,2),
             "Values" = c(length(outOfTime1withIns[,1]), 
                          length(outOfMem1withIns[,1]),
                          length(outOfTime1noIns[,1]),
                          length(outOfMem1noIns[,1])))



df=sqldf("select Values,
     CASE WHEN MorT==1 THEN 'Insuficient Time'
          WHEN MorT==2 THEN 'Insuficient Memory'
     END MorT,
     CASE WHEN Model==1 THEN '1) FSM1 with Insertion Dominance' 
          WHEN Model==2 THEN '2) FSM1 without Insertion Dominance' 
     END Model from df")

p = ggplot(data=df, 
       aes(x=factor(1),
           y=Summary,
           fill = factor(Model)
       )
)

我尝试运行“df = sqldf(”select ...“

后出现以下错误
Error in sqliteExecStatement(con, statement, bind.data) : 
RS-DBI driver: (error in statement: near "Values": syntax error)

当然p是空的。我得到了

Error: No layers in plot

如果我试着打电话。

非常感谢任何帮助!谢谢

2 个答案:

答案 0 :(得分:3)

'Values'是SQL中的关键字,因此您不能将其用作变量名。将其更改为“值”或数据框中的其他内容,应该对SQL错误进行排序。

看起来您正在关注http://www.r-chart.com/2010/07/pie-charts-in-ggplot2.html上的示例。

首先,你的ggplot中有y = Summary,需要为你的代码更新为'value'。

接下来,您正在使用的数据似乎存在问题(我没有outOfMem1noIns所以我制作了测试数据),但是您应该确保每个MorT的值总和为1。

然后教程页面上的代码应该可以工作(可能带有一些警告信息......)

答案 1 :(得分:1)

SQL语句有语法错误,因为错误状态。此外,ggplot2错误来自于您尚未添加几何体的事实,例如geom_point

p = ggplot(data=df, 
       aes(x=factor(1),
           y=Summary,
           fill = factor(Model)
       )
) + geom_point()
相关问题