简体   繁体   English

在 R 上绘制 3D 饼图时出现错误消息

[英]message of error when plotting a 3D pie chart on R

I currently have trouble plotting a 3D pie chart whereas it had worked well with a very similar dataset.我目前无法绘制 3D 饼图,而它在非常相似的数据集上运行良好。

Here is my dataset:这是我的数据集:

structure(list(type_de_sejour = structure(1:4, levels = c("Ambulatoires", 
"Externes", "Fictifs", "Hospitalisé"), class = "factor"), nb_sejours_2021 = c(20794, 
365, 0, 7866)), row.names = c(NA, -4L), class = "data.frame")

And here is my code:这是我的代码:

lab <- paste0(round(pie1_PGS$nb_sejours_2021/sum(pie1_PGS$nb_sejours_2021) * 100, 2), 
"%")


pie3D(pie1_PGS$nb_sejours_2021, radius = 0.75,
      height = 0.1,
      theta = 0.7,
      border = "white",
      col = rainbow(length(lab)),
      shade = 0.5,
      labels = lab,
      labelcol = "red",
      labelcex = 0.75,
      explode = 0.2,
      main = "Répartition des séjours 2021 par type")

I get the following message of error:我收到以下错误消息:

"Error in seq.default(start, end, by = angleinc) : 
  (to - from) / by incorrect"

Also, I would like to plot a legend to indicate what the colours mean (they take the values of variable type_de_sejour).另外,我想 plot 一个图例来指示颜色的含义(它们采用变量 type_de_sejour 的值)。 I have seen several posts here, but I can't seem to manage to do it on this dataset, so I would welcome any help regarding this issue too.我在这里看到了几篇文章,但我似乎无法在这个数据集上做到这一点,所以我也欢迎任何关于这个问题的帮助。 Here is the code I added:这是我添加的代码:

legend(0.5, 1.5, c("Ambulatoires","Externes", "Hospitalisé", 
"Séances"), cex = 0.3,
       fill = rainbow(length(lab)))

I think the problem is that the legend is too big as regards the plot...我认为问题在于 plot 的传说太大了......

Add legend添加图例

You can use the function legend like this:您可以像这样使用 function legend

pie1_PGS <- structure(list(type_de_sejour = structure(1:4, levels = c("Ambulatoires", 
                                                                      "Externes", "Fictifs", "Hospitalisé"), class = "factor"), nb_sejours_2021 = c(20794, 
                                                                                                                                                    365, 0, 7866)), row.names = c(NA, -4L), class = "data.frame")

pie1_PGS <- pie1_PGS[!(pie1_PGS$nb_sejours_2021 == 0),]

lab <- paste0(round(pie1_PGS$nb_sejours_2021/sum(pie1_PGS$nb_sejours_2021) * 100, 2), 
              "%")

library(plotrix)
pie3D(pie1_PGS$nb_sejours_2021, 
      radius = 0.75,
      height = 0.1,
      theta = 0.7,
      border = "white",
      col = rainbow(length(lab)),
      shade = 0.5,
      labels = lab,
      labelcol = "red",
      labelcex = 0.75,
      explode = 0.2,
      main = "Répartition des séjours 2021 par type") 

legend(0.1, 0.9, pie1_PGS$type_de_sejour, cex = 0.7, fill = rainbow(length(lab)))

Created on 2022-08-11 by the reprex package (v2.0.1)代表 package (v2.0.1) 于 2022 年 8 月 11 日创建

You should remove the rows with 0 value because you can't show them in a pie chart.您应该删除值为 0 的行,因为您无法在饼图中显示它们。 You can use the following code:您可以使用以下代码:

pie1_PGS <- structure(list(type_de_sejour = structure(1:4, levels = c("Ambulatoires", 
                                                                      "Externes", "Fictifs", "Hospitalisé"), class = "factor"), nb_sejours_2021 = c(20794, 
                                                                                                                                                    365, 0, 7866)), row.names = c(NA, -4L), class = "data.frame")

pie1_PGS <- pie1_PGS[!(pie1_PGS$nb_sejours_2021 == 0),]

lab <- paste0(round(pie1_PGS$nb_sejours_2021/sum(pie1_PGS$nb_sejours_2021) * 100, 2), 
              "%")

library(plotrix)
pie3D(pie1_PGS$nb_sejours_2021, 
      radius = 0.75,
      height = 0.1,
      theta = 0.7,
      border = "white",
      col = rainbow(length(lab)),
      shade = 0.5,
      labels = lab,
      labelcol = "red",
      labelcex = 0.75,
      explode = 0.2,
      main = "Répartition des séjours 2021 par type") 

Created on 2022-08-10 by the reprex package (v2.0.1)代表 package (v2.0.1) 于 2022 年 8 月 10 日创建

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM