0

次のコードを使用して、ggplot2 で円グラフを作成しています。これには、「MotT」の値ごとに 1 つずつ、2 つの円グラフが隣り合って含まれています。各円グラフは、各「モデル」の比率をどのようにする必要があります。これが私のコードです:

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

呼んでみると。

どんな助けでも大歓迎です!ありがとう

4

2 に答える 2

3

'Values' は SQL のキーワードであるため、変数名として使用することはできません。SQLエラーをソートする必要があるデータフレーム内の「値」または他の何かに変更します。

http://www.r-chart.com/2010/07/pie-charts-in-ggplot2.htmlの例に従っているようです。

まず、ggplot に y = Summary があり、コードの「値」に更新する必要があります。

次に、使用しているデータに問題があるようですが (outOfMem1noIns がないのでテスト データを作成しました)、各 MorT の値の合計が 1 になるようにする必要があります。

その後、チュートリアルページにあるコードが機能するはずです(おそらくいくつかの警告メッセージが表示されます...)

于 2013-08-15T11:41:59.010 に答える