繁体   English   中英

在 R 上绘制 3D 气泡图

[英]plotting a 3D bubble graph on R

我目前正在尝试使用 2 个轴(然后我将尝试使用 3 个)轴绘制 3D 气泡图,如在 excel 中,但在 R 上(这是我尝试绘制的 3D 气泡图的示例): https:/ /fr.extendoffice.com/documents/excel/2017-excel-create-bubble-chart.html

library(ggplot2)
library(scales)

p <- ggplot(plot_3D, aes(x = var_2020_2021_valeur, y = var_2020_2021_CA)) + 
  geom_point(aes(color = Specialite, size = CA.annee.N), alpha = 0.5) +
  scale_color_manual(values = c("#00AFBB", "#E7B800", "#FC4E07",
                               "#FFB5C5", "#BF87B3", "#7F5AA2", "#3F2D91", "#000080",
                               "#2468A0", "#a32cc4", "#9073db", "#c51f5d",
                               "#5800ff", "#4455ff", "#48ff50")) +
  scale_size(range = c(0.5, 12)) + # Réglage de la plage de tailles des points
  ylim(-100, 100) + 
  xlim (-100, 100) + 
  geom_hline(yintercept=0) +
  geom_vline(xintercept=0) +
  scale_y_continuous(labels = percent) +
  scale_x_continuous(labels = percent)

我收到以下错误消息:

"Scale for 'y' is already present. Adding another scale for 'y', 
which
will replace the existing scale.
Scale for 'x' is already present. Adding another scale for 'x', 
which
will replace the existing scale."

即使我放弃了最后两行代码,它也不起作用......

这是我的数据集 plot_3D 的结构:

structure(list(Specialite = c("ANESTHESIE REANIMATION", "Autres", 
"CHIRURGIE GENERALE ET VISCERALE", "CHIRURGIE PLASTIQUE", "GASTRO ENTEROLOGIE", 
"GYNECOLOGIE OBSTETRIQUE", "IMAGERIE", "MAXILLO STOMATO", "MEDECINE GENERALE et 
INTERNE", 
"OPHTALMOLOGIE", "ORL", "ORTHOPEDIE", "PNEUMOLOGIE", "URGENTISTE", 
"UROLOGIE"), CA.annee.N = c(64310L, 25298L, 1205537L, 42020L, 
3694964L, 344370L, 3454L, 588033L, 228439L, 1849804L, 27358L, 
2739286L, 0L, 916L, 432907L), Nombre.de.sejours.annee.N = c(171L, 
34L, 1504L, 56L, 9224L, 682L, 9L, 1103L, 888L, 2276L, 57L, 4068L, 
0L, 2L, 720L), CA.annee.N.1 = c(50135L, 454L, 790559L, 15531L, 
2644858L, 304242L, 3026L, 402195L, 459813L, 1308933L, 20597L, 
2269691L, 0L, 3901L, 318352L), Nombre.de.sejours.annee.N.1 = c(150L, 
1L, 1067L, 25L, 7276L, 627L, 9L, 802L, 1918L, 1693L, 43L, 3519L, 
0L, 7L, 547L), CA.annee.N.2 = c(48583L, 453L, 941610L, 16675L, 
3140507L, 385813L, 2950L, 642017L, 691982L, 1704005L, 51602L, 
2261368L, 7145L, 4648L, 308169L), Nombre.de.sejours.annee.N.2 = c(154L, 
1L, 1264L, 28L, 8317L, 831L, 8L, 1286L, 3231L, 2269L, 127L, 3610L, 
26L, 10L, 551L), CA_par_sejour_N = c(376.081871345029, 744.058823529412, 
801.553856382979, 750.357142857143, 400.581526452732, 504.941348973607, 
383.777777777778, 533.121486854034, 257.251126126126, 812.743409490334, 
479.964912280702, 673.374139626352, NaN, 458, 601.259722222222
), CA_par_sejour_N1 = c(334.233333333333, 454, 740.917525773196, 
621.24, 363.504398020891, 485.234449760766, 336.222222222222, 
501.490024937656, 239.735662148071, 773.14412285883, 479, 644.981813015061, 
NaN, 557.285714285714, 581.99634369287), CA_par_sejour_N2 = c(315.474025974026, 
453, 744.944620253165, 595.535714285714, 377.600937838163, 464.275571600481, 
368.75, 499.235614307932, 214.169606932838, 750.993829881005, 
406.314960629921, 626.417728531856, 274.807692307692, 464.8, 
559.290381125227), var_2020_2021_valeur = c(0.125207553640259, 
0.638896087069189, 0.0818395145215454, 0.207837780659878, 0.101999119223065, 
0.0406131494220115, 0.141440846001322, 0.063074957314078, 0.0730615704860669, 
0.051218505658529, 0.00201443064864667, 0.0440203522616658, NaN, 
-0.178159446295822, 0.0330987964754596), var_2020_2021_CA = c(0.282736611149895, 
54.7224669603524, 0.524917178856986, 1.70555662867813, 0.397036816343259, 
0.131895004634469, 0.141440846001322, 0.462059448774848, -0.503191514811456, 
0.413215191304673, 0.328251687138904, 0.206898207729598, NaN, 
-0.765188413227378, 0.35983753832236)), class = "data.frame", row.names = c(NA, 
-15L))

有人可以帮忙吗?

您应该删除xlimylim ,因为当您没有在轴上指定任何其他内容时可以使用它们。 因此,您可以在limits参数中将限制添加到两个scale_*_continuous ,如下所示:

library(ggplot2)
library(scales)
p <- ggplot(plot_3D, aes(x = var_2020_2021_valeur, y = var_2020_2021_CA)) + 
  geom_point(aes(color = Specialite, size = CA.annee.N), alpha = 0.5) +
  scale_color_manual(values = c("#00AFBB", "#E7B800", "#FC4E07",
                                "#FFB5C5", "#BF87B3", "#7F5AA2", "#3F2D91", "#000080",
                                "#2468A0", "#a32cc4", "#9073db", "#c51f5d",
                                "#5800ff", "#4455ff", "#48ff50")) +
  scale_size(range = c(0.5, 12)) + # Réglage de la plage de tailles des points
  geom_hline(yintercept=0) +
  geom_vline(xintercept=0) +
  scale_y_continuous(labels = percent, limits = c(-100, 100)) +
  scale_x_continuous(labels = percent, limits = c(-100, 100))
p
#> Warning: Removed 1 rows containing missing values (geom_point).

reprex 包创建于 2022-07-12 (v2.0.1)

暂无
暂无

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

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