英文:
creating a pie of pie chart with ggplot2
问题
我一直在使用ggplot2制作各种图表。我有兴趣尝试制作一个嵌套饼图(我认为是这样称呼的)。它的样子会是这样的:
我知道如何制作单个饼图,但不知道如何添加第二个饼图。如果能找到一种方法在一个楔形上再添加第三个饼图就更好了。我不排斥使用除了ggplot2以外的其他包,尽管我在Python方面并不是很熟练!
英文:
I have been using ggplot2 to make all sorts of plots. I am interested in trying to make a pie of pie chart (I think that is what it is called). It would look something like this:
I know how to make a single pie chart, but can't figure out how to do it with adding the 2nd pie to it. It would be a bonus if there was a way to add a 3rd pie coming off from a another wedge. I'm not opposed to using other packages than ggplot2, although I'm not very proficient with python!
答案1
得分: 1
这似乎不是我知道的标准绘图类型,据我所知,没有可以实现这种设置的包。你_可以_使用ggplot2
和scatterpie
来实现,但连接线可能需要通过试验来确定。此外,你需要确保你的数据格式正确,但由于你没有提供任何示例数据,所以很难知道你如何做到这一点,我只能在这里为你提供一个简单的演示:
library(ggplot2)
library(scatterpie)
df <- data.frame(A = c(1, 0), B = c(20, 0), C = c(5, 0),
D = c(50, 0), E = c(40, 0),
F = c(0, 20), G = c(0, 2), H = c(0, 40),
I = c(0, 10), J = c(0, 35),
group = c('A', 'B'),
xpos = c(1, 5), ypos = c(1, 2), size = c(2, 1))
ggplot(df) +
geom_scatterpie(aes(x = xpos, y = ypos, r = size, group = group),
data = df, cols = LETTERS[1:10], color = 'gray30') +
geom_path(data = data.frame(x = c(2.84, 4.38), y = c(1.85, 2.8)), aes(x, y),
color = 'gray80') +
geom_path(data = data.frame(x = c(2.99, 4.58), y = c(1.32, 1.08)), aes(x, y),
color = 'gray80') +
coord_equal() +
theme_void() +
theme(legend.position = 'none')
英文:
This isn't really a standard plot type as far as I know, so to my knowledge there is no package that allows such a set-up. You could do it using ggplot2
and scatterpie
, though I'm afraid the lines to connect the segments are a case of trial-and-error. You also need your data to be in the correct format, but since you have not provided any sample data, it's difficult to know how you would achieve this and I can only give you a simple demo here:
library(ggplot2)
library(scatterpie)
df <- data.frame(A = c(1, 0), B = c(20, 0), C = c(5, 0),
D = c(50, 0), E = c(40, 0),
F = c(0, 20), G = c(0, 2), H = c(0, 40),
I = c(0, 10), J = c(0, 35),
group = c('A', 'B'),
xpos = c(1, 5), ypos = c(1, 2), size = c(2, 1))
ggplot(df) +
geom_scatterpie(aes(x = xpos, y = ypos, r = size, group = group),
data = df, cols = LETTERS[1:10], color = 'gray30') +
geom_path(data = data.frame(x = c(2.84, 4.38), y = c(1.85, 2.8)), aes(x, y),
color = 'gray80') +
geom_path(data = data.frame(x = c(2.99, 4.58), y = c(1.32, 1.08)), aes(x, y),
color = 'gray80') +
coord_equal() +
theme_void() +
theme(legend.position = 'none')
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论