2014-09-15 7 views
1

Мои данные, как это:R предотвратить перекрытие в круговых диаграммах

VariantClass PASS_ONTARGET 
    Silent   50.30 
    Missense   47.00 
    Nonsense   0.74 
    Startloss   0.26 
    Stoploss   0.74 
    Frameshift-indel 0.61 
    Inframe-indel  0.35 

и мой код для создания круговой диаграммы является:

data <- read.table(file=Infilename, header=T, sep="\t") 
    png(filename=Outfilename,height=4000,width=5000,res=600) 
    y<-data$PASS_ONTARGET 
    color<-c("blue","green","light blue","orange","purple","red","yellow") 
    names<-c(data$VariantClass) 
    pie(y, labels=names, font=2, main="Variant Class Distribution", clockwise = FALSE, density = NULL, col = color, border = NULL, lty = NULL) 
    legend("topright",legend=names,cex=1.0, bty="n", fill=c(color)) 
    dev.off() 

Проблема я получаю, что метки на графике перекрываются друг с другом. Как я могу это предотвратить?

+2

При всем уважении, пожалуйста, никогда не используйте круговые диаграммы. Они почти не дают информации. Ваши данные будут гораздо лучше переданы с диаграммой Парето (с или без кумулятивной строки). –

+0

Но что мой старший просит меня поставить круговую диаграмму. Даже я не поклонник круговых диаграмм, но это требование для более крупного проекта. Не могли бы вы помочь? –

+2

А, ну, тогда вы застряли :-(. –

ответ

4

Сделать радиус больше и сжать этикетки.

pie(<your other arguments>, radius = 1, cex = 0.3) 

Но, как сказал Карл, don't use pie charts.

+0

Спасибо, но когда я уменьшаю cex, он сжимается до нечитаемого значения. Что я хочу сделать, так это увеличить метки ярлыков, чтобы указать на отдельные области, чтобы pin point значение –

+0

Хмм, тогда вам, возможно, придется писать метки отдельно, используя 'text()' –

+2

Поскольку ваши другие группы настолько малы, почему бы не объединить их в одну «другую» категорию? Это не так, как вы можете точно Оцените размер каждой крошечной категории из круговой диаграммы в любом случае. –

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