繁体   English   中英

使用r格式化ggplot2中的点的圆形区域图

[英]formatting circular area plot with point in ggplot2 using r

这是我的情节:

gr1 <- c(1, 5, 15, 20, 30, 40)
gr3 <- c(1, 5, 10, 25, 40, 60, 80)
gr2 <- c(1, 15, 25, 30, 40)

df2<- data.frame (pos = c(gr1, gr2, gr3), group = c(rep(1, length(gr1)),
 rep(2, length(gr2)), rep(3, length(gr3))))
df2$cpos <- cumsum (df2$pos)
df2$y <- rep(3, length (df2$cpos))
df2$y1 <- rep(0.35, length (df2$cpos))

df3 <- data.frame (cpos = rep(df2$cpos, 2), 
group = rep(df2$group,2), yd = c(df2$y, df2$y1),
x2 = c(rep(1, length (df2$y)),
rep(2, length (df2$y1))))

cx <- ggplot(df3, aes(y = yd, x = cpos, fill=factor(x2)))
cx1 <- cx + geom_area(aes(stat = "identity", position="fill" ))
cx1 +  geom_point(aes(color = factor(group)), pch = 19, size = 4) + 
scale_fill_manual(values=c("blue", "yellow", "green")) + coord_polar()

在此处输入图片说明

我无法摆脱一些问题

(1)我无法更改点的颜色,颜色更改仅适用于圆。

(2)在中心圆上绘制附加点,我不想绘制。 (它们是额外的csum点)

声明:此帖子与先前的帖子有关

奖励意外艺术

在努力解决问题时,我做了一个向日葵图。

df2<- data.frame (pos = c(gr1, gr2, gr3), group = c(rep(1, length(gr1)),
 rep(2, length(gr2)), rep(3, length(gr3))))
df2$cpos <- cumsum (df2$pos)
df2$y <- rep(3, length (df2$cpos))
df2$y1 <- rep(0.01, length (df2$cpos))
df2$y3 <- rep(2, length (df2$cpos))

df3 <- data.frame (cpos = rep(df2$cpos, 3), group = c(rep(1, length (df2$y)),
 rep(2, length (df2$y)), rep(3, length (df2$y))),
 yd = c(df2$y, df2$y1, df2$y3), x3 = c(rep(1, length (df2$y)), 
 rep(2, length (df2$y1)),rep(2, length (df2$y1)) ))

做花

cx <- ggplot(df3, aes(y = yd, x = cpos, fill=factor(x3)))
cx1 <- cx + geom_area(aes(stat = "identity", position="fill" ))
cx2 <- cx1 +  geom_point(aes(color = factor(group)), pch = 19, size = 4) + 
  scale_fill_manual(values=c("yellow", "pink")) + coord_polar()
cx2 + theme_bw()+ opts(axis.line=theme_blank(),axis.text.y=theme_blank(),
 axis.ticks = theme_blank(), axis.title.y=theme_blank(), 
 plot.background=theme_blank(), panel.border=theme_blank())

在此处输入图片说明

对于第二个问题,这是您想要的吗? 点的内圆对应于df3数据帧中的yd = 0.35x2 = 2 因此,在geom_point调用中,将这些点从df3数据框中删除。 在这里,我使用subset

# Your data
gr1 <- c(1, 5, 15, 20, 30, 40)
gr3 <- c(1, 5, 10, 25, 40, 60, 80)
gr2 <- c(1, 15, 25, 30, 40)

df2<- data.frame (pos = c(gr1, gr2, gr3), group = c(rep(1, length(gr1)),
 rep(2, length(gr2)), rep(3, length(gr3))))
df2$cpos <- cumsum (df2$pos)
df2$y <- rep(3, length (df2$cpos))
df2$y1 <- rep(0.35, length (df2$cpos))

df3 <- data.frame (cpos = rep(df2$cpos, 2), 
  group = rep(df2$group,2), yd = c(df2$y, df2$y1),
  x2 = c(rep(1, length (df2$y)),
  rep(2, length (df2$y1))))

# The plot
library(ggplot2)
cx <- ggplot(df3, aes(y = yd, x = cpos, fill=factor(x2)))
cx1 <- cx + geom_area(aes(stat = "identity", position="fill" ))
cx1 +  geom_point(data = subset(df3, x2 == 1), aes(color = factor(group)), 
  pch = 19, size = 4) + 
  scale_color_manual(values=c("blue", "yellow", "green"))  + coord_polar()

结果是:

在此处输入图片说明

暂无
暂无

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

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