2014-12-01 2 views
0

Я загружаю переменную supportdata следующим образом.pie3D: значения x должны быть положительными числами

supportdata=aggregate(scoredata$Support, list(Topic = scoredata$Topic), sum) 

slices <- supportdata[2] 

lbls <- supportdata[1] 

typeof(slices) 

3D разобранном круговая диаграмма Ниже

pie3D(slices,labels=lbls,explode=0.1,main="Year wise scores for topic 1") 

и я получаю ошибку ниже:

Error in pie3D(slices, labels = lbls, explode = 0.1, main = "Year wise scores for topic 1") :pie3D: x values must be positive numbers

supportdata переменная содержит следующую информацию и генерируется с использованием агрегатной функции, которая суммирует баллы во втором столбце.

# supportdata 
# 
# Topic x 
# 
# 1  c 14 
# 2  c# 80 
# 3  c++ 15 
# 4  css 4 
# 5  html 3 
# 6 .net 3 
# 7  php 0 
# 8  sql 0 

Как избавиться от этой ошибки? Я попытался выполнить поиск, но не смог найти решение этой проблемы. Я пробовал кастинг в as.numeric, as.integer, но он говорит, что список не может быть принужден к двойному или целочисленному типу. :(

+0

Предположительно, 'pie3D' сообщает вам, что он не может обрабатывать ваши фрагменты нулевой ширины. Что, если вы измените эти значения на что-то очень маленькое, но положительное? –

+1

Я не могу воспроизвести даже с нулевыми значениями. Можете ли вы редактировать результаты 'dput (supportdata)', пожалуйста? –

+0

try 'slices <- supportdata [[1]]'. –

ответ

2

Ваша проблема индексации с [, а не [[, который возвращает список чисел, а не числового вектора.

library("plotrix") 
pie3D(supportdata[[2]],labels=supportdata[[1]], 
     explode=0.1,main="Year wise scores for topic 1") 

работает отлично, как это делает

with(supportdata,pie3D(x,labels=Topic, 
     explode=0.1,main="Year wise scores for topic 1")) 
+0

Привет, Бен, Спасибо ... Это работает ... Да ... Это была первопричина ... Я попытался использовать нижеследующее, и он тоже работал отлично. Я сделал транспонирование списка ввода. – Zack

1

Нижеследующее решение работает также отдельно от одного, предоставленного Бен.

slices <- t(supportdata[2]) 
lbls <- t(supportdata[1]) 
pie3D(slices,labels=lbls,explode=0.1,main="Pie Diagram for Support") 
Смежные вопросы

 Смежные вопросы