R ggplot绘制0~1取值Freq列对应饼图 实现数值1对应完整饼图
解决方案
问题的核心是ggplot默认会根据输入数据的范围自动适配y轴刻度,你只需要手动固定y轴的取值范围为0~1即可实现需求。
你可以在原有代码基础上添加ylim(0, 1)或者scale_y_continuous(limits = c(0, 1))固定y轴范围,修改后的完整代码如下:
df <- structure(list(name = c("bac2", "bac", "bac", "bac", "bac", "bac", "bac", "bac", "bac", "bac", "bac"), primaryTumorLocation = c("Vulva", "Adrenal gland", "Anus", "Appendix", "Bile duct", "Bone marrow", "Bone/Soft tissue", "Breast", "Bronchus", "Colorectum", "Esophagus"), absolute = c(0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 0L), Freq = c(0.323, 0.0013, 0.0588235294117647, 0.3, 0.2, 0.5, 0.1, 0.0013986013986014, 0, 0.00201612903225806, 0)), row.names = 240:250, class = "data.frame") ggplot(df, aes(x=1, y=Freq)) + coord_polar("y") + theme(axis.text.y = element_blank()) + geom_bar(stat="identity") + ylim(0, 1) + # 新增该行固定y轴范围为0~1 facet_grid(name~primaryTumorLocation)
修改后极坐标的满圈刻度对应y=1,饼图的填充占比会直接和Freq的数值一一对应,Freq为1时就会完整填充整个饼图。
内容的提问来源于stack exchange,提问作者user2300940
相关产品推荐
相关产品推荐

