我正在使用以下代码创建一个带有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
如果我试着打电话。
非常感谢任何帮助!谢谢
答案 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()