gpt4 book ai didi

r - 如何在ggplot2中将图例标签放入图中

转载 作者:行者123 更新时间:2023-12-01 10:48:27 25 4
gpt4 key购买 nike

上下文:R/ggplot2。

是否有一种自动方式(甚至是手动方式)将图例因子像此处的能量(Co、4、6、10 等)放入图中,而不是将它们放在常规的图例框中旁边的情节?

Source: Radiation Oncology Physics: A Handbook for Teachers and Students, EB. Podgorsak

资料来源:放射肿瘤物理学:教师和学生手册,EB。波德戈萨克

最佳答案

所以这看起来很接近。我将其描述为“半自动”:肯定需要进行一些调整,但大部分工作都是为您完成的...

棘手的一点不是放置文本标签 (geom_text(...)),而是在绘制的曲线中创建中断。这是通过 geom_rect(...) 完成的,其中矩形的宽度设置为使用 strwidth(...) 确定的最大标签宽度。

# create sample data
df <- data.frame(x=rep(seq(0,20,.01),5),k=rep(1:5,each=2001))
df$y <- with(df,x*exp(-x/k))

library(ggplot2)
eps.x <- max(strwidth(df$k)) # maximum width of legend label
eps.y <- eps.x*diff(range(df$y))/diff(range(df$x))
ggplot(df,aes(x,y))+
geom_line(aes(group=factor(k)))+
geom_rect(data=df[df$x==5,],
aes(xmax=x+eps.x, xmin=x-eps.x, ymax=y+eps.y, ymin=y-eps.y),
fill="white", colour=NA)+
geom_text(data=df[df$x==5,],aes(x,y,label=k))+
theme_bw()

如果你也想给线条上色:

ggplot(df,aes(x,y))+
geom_line(aes(color=factor(k)))+
geom_rect(data=df[df$x==5,],
aes(xmax=x+eps.x, xmin=x-eps.x, ymax=y+eps.y, ymin=y-eps.y),
fill="white", colour=NA)+
geom_text(data=df[df$x==5,],aes(x,y,label=k), colour="black")+
scale_color_discrete(guide="none")+
theme_bw()

关于r - 如何在ggplot2中将图例标签放入图中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23188710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com