1

我正在使用R从数据库中检索数据并生成一些漂亮的图。特别是,当我生成如下饼图时,我可以看到:

library(plotrix)
library(RODBC)
channel<-odbcConnect("MySql")
sqlQuery(channel,"use mydb")
res <-sqlQuery(channel, "SELECT categorystats.name categorystats.totalclick FROM categorystats")

png(filename="pie.png", width=800, height=800)

slices <- res$totalclick
lbls <- res$name
pct <- round(slices/sum(slices)*100)    
lbls <- paste(lbls, pct) # add percents to labels
lbls <- paste(lbls,"%",sep="") # add % to labels
pie3D(slices,labels = lbls,explode=0.1,main="Categorie di prodotti più visitate") 

dev.off()
odbcClose(channel)

我得到以下饼图:阴谋

不幸的是,一些标签没有显示在图像内。

是否存在这样的命令来制作饼图和适合图像大小的相关标签?

4

1 回答 1

2

如果没有可重现的示例,我无法提供明确的答案,但这里有一些事情可以尝试:

1) 缩小饼图的大小,为标签留出更多空间。您可以通过radius=0.8在对pie3D. 这可能足以解决您的问题。

2) 使用边距,看看是否可以为标签创造更多空间。您可以通过添加mar=c(bottom, left, top, right)pie3D呼叫来做到这一点。每个值都是以行数给出的边距大小。

3)您的标签已经有点小了,但是您可以通过在调用中添加labelcex=0.9(或任何适合您的缩放因子)来使它们更小pie3D

labelpos4)您也可以在pie3D通话中使用标签位置。玩弄帮助中的示例,pie3D看看它是如何工作的。

我将提出一些不请自来的建议(“建议是生活的电梯音乐”,我的大学校长在我们毕业时告诉我们,然后继续给我们一堆建议):饼图是显示数据的糟糕方式,因为很难辨别不同切片面积的差异。透视饼图只会通过扭曲不同切片的相对区域而使情况变得更糟。将 3D 添加到 2D 对象使得比较切片区域变得更加困难。如果您必须使用饼图,请考虑切换到正面(圆形)二维饼图。

于 2013-01-08T21:31:37.277 回答