我想创建一个仪表盘来可视化变量对另一个变量的影响大小。
我已经编写了一个绘制仪表盘的函数,并使用了三种不同的颜色进行填充。
gg.gauge <- function(pos,breaks=c(0,33,66,100),determinent) {
require(ggplot2)
get.poly <- function(a,b,r1=0.5,r2=1.0) {
th.start <- pi*(1-a/100)
th.end <- pi*(1-b/100)
th <- seq(th.start,th.end,length=100)
x <- c(r1*cos(th),rev(r2*cos(th)))
y <- c(r1*sin(th),rev(r2*sin(th)))
return(data.frame(x,y))
}
ggplot()+
geom_polygon(data=get.poly(breaks[1],breaks[2]),aes(x,y), fill = "red")+
geom_polygon(data=get.poly(breaks[2],breaks[3]),aes(x,y), fill = "gold")+
geom_polygon(data=get.poly(breaks[3],breaks[4]),aes(x,y), fill = "green")+
geom_polygon(data=get.poly(pos-1,pos+1,0.2),aes(x,y))+
geom_text(data=as.data.frame(breaks), size=5, fontface="bold", vjust=0,
aes(x=0.8*cos(pi*(1- breaks/100)),y=-0.1),label=c('Less','','',"More"))+
annotate("text",x=0,y=0,label=determinent,vjust=0,size=8,fontface="bold")+
coord_fixed()+
theme_bw()+
theme(axis.text=element_blank(),
axis.title=element_blank(),
axis.ticks=element_blank(),
panel.grid=element_blank(),
panel.border=element_blank(),
legend.position = "none")
}
输出:
我想用渐变颜色填充它,以使其从红色(低)到绿色(高)呈现淡化效果,而不是非常明显的间断。
我尝试使用scale_fill_gradientn
,但没有取得积极的结果。
谢谢
th
的长度吗?我得到的输出似乎有“缺失”的数据(空白区域)。 - La Chouetteth
的长度是绘制的线段数。我使用了1000,这已经足够了。如果需要可以尝试更多。 - Martin Schmelzergeom_segment
中添加例如lwd=3
来增加线段的粗细。找到最适合您需求的两种选项的完美组合。 - Martin Schmelzer