如何在R中的ggplot2函数中调整geom_text()
我正在使用正在工作的自定义函数“stepPlot”创建一个步骤图。当我试图在这个函数中放入geom_text()时,我被卡住了。有趣的是,geom_text()不在函数中时可以工作。谁能帮我调整geom_text()。有两部分:(1)“labelPosiX”是标签文本的水平位置,(2)geom_text()位于函数末尾。“labelPosiY”(标签的垂直位置)将手动指定一个数字。这两行代码已被禁用。提前谢谢如何在R中的ggplot2函数中调整geom_text(),r,function,ggplot2,R,Function,Ggplot2,我正在使用正在工作的自定义函数“stepPlot”创建一个步骤图。当我试图在这个函数中放入geom_text()时,我被卡住了。有趣的是,geom_text()不在函数中时可以工作。谁能帮我调整geom_text()。有两部分:(1)“labelPosiX”是标签文本的水平位置,(2)geom_text()位于函数末尾。“labelPosiY”(标签的垂直位置)将手动指定一个数字。这两行代码已被禁用。提前谢谢 stepPlot <- function(Data,xVar, yVar, Le
stepPlot <- function(Data,xVar, yVar, LegendTitle="", GroupLabels, Plottitle="",labelPosiY, labelText="A"
# plot specifications remain the same over data subsets. Ignore these setting when calling the function
GroupColour=c("black","blue","orange"), LineTypeGroup=c("solid","solid","solid"), LineSize=1,
LegendPosition=c(0.5,0.8),
YaxisTitle="", YAxisTitleSize=element_blank(),
XAxisText=element_text(size=20),AxisTextSize=15,LegendTitleSize=10, LegendTextSize=10,LegendKeySize=10,
PlotTitleSize=15
){
# define x limits (Xmin, Xmax), x break increments (BreakIncreX),level of breaks (GroupBreaks),horizontal position of label text (labelPosiX)
Xmin <- min(Data[xVar])-1
Xmax <- max(Data[xVar])+1
BreakIncreX <- round((Xmax-Xmin)/6)
GroupBreaks <-unique(Data$trt_label)
#labelPosiX <-min(Data[xVar])+2
# define y maximal limit (limitYMax),y break increments (BreakIncreY)
library(plyr)
limitYMax <- round_any(max(Data[yVar]), 100, f = ceiling)
BreakIncreY <- round_any(max(Data[yVar])/5, 100, f = ceiling)
# step plot
ggplot(Data, aes_string(x=xVar, y=yVar, group='trt_label'))+
geom_step(aes(colour=trt_label, linetype=trt_label), direction='hv',size= LineSize)+ #specify step curve from different group with colours, colour by default
scale_y_continuous(YaxisTitle, limits=c(0,limitYMax), expand=c(0,0), breaks=seq(0,limitYMax,by=BreakIncreY))+
scale_x_continuous("Age of adults in days", limits=c(Xmin, Xmax), expand=c(0,0), breaks=seq(Xmin,Xmax,by=BreakIncreX)) +
scale_colour_manual(name=LegendTitle,
breaks=GroupBreaks,
labels=GroupLabels,
values=GroupColour
)+ # change default colours to manually specified grey scale
scale_linetype_manual(name =LegendTitle,
breaks=GroupBreaks,
labels=GroupLabels,
values=LineTypeGroup
)+
guides(colour = guide_legend(LegendTitle), linetype = guide_legend(LegendTitle))+ # merge two legends into a single one
theme_bw() + # maek background theme black and white
theme(axis.title.x = element_blank(), #font size of x axis title
axis.title.y = YAxisTitleSize, #font size of y axis title
axis.text.x = XAxisText, #font size of x axis text
axis.text.y = element_text(size=AxisTextSize), #font size of y axis text
legend.position=LegendPosition,
legend.title=element_text(size=LegendTitleSize), #font size of legend title
legend.text = element_text(colour="black", size = LegendTextSize, face = "bold"), #font size of legend text
legend.key.size=unit(LegendKeySize,'points'), ## ben - added to shrink the legend
legend.background=element_blank(), ## ben - added to get rid of white background
panel.grid.major = element_line(size = 0.5, colour = '#FFFFFF'),
panel.grid.minor = element_line(colour = NA), # colour = NA to suppress gridlines, reappear if colour='black'
plot.title=element_text( face="bold", size=PlotTitleSize) # aduust plot title size
)+
ggtitle(Plottitle)
# add label text
**#+ geom_text(aes(labelPosiX, labelPosiY, label="test"), colour="black",size=5)** }
}
steplot这里有一种方法可以将geom_text
的(x,y)位置传递给函数:
通常,将其作为ggplot正在打印的数据框的一部分。(根据SimonO101的建议,这里介绍了它如何适用于mtcars
)
产生
您可以尝试将geom_文本
作为代码工作的一部分,然后引入绘图的所有其他方面。这里有一种方法可以将geom_文本
的(x,y)位置传递给函数:
通常,将其作为ggplot正在打印的数据框的一部分。(根据SimonO101的建议,这里介绍了它如何适用于mtcars
)
产生
您可以尝试将geom_文本
作为代码工作的一部分,然后引入绘图的所有其他方面。尽管有25多个视图,但缺少答案可能是因为代码密集且冗长,甚至不包含可复制的示例(我们无法访问对象数据)。制作一个小玩具的例子会非常有帮助,也许可以使用内置的数据集,如mtcars
,例如data(mtcars)
会将内置的mtcars
data.frame加载到您的工作区中。在没有数据支持代码的情况下进行了太多的工作。尽管有25个以上的视图,但仍然没有答案,这可能是因为代码密集且冗长,甚至不包含可复制的示例(我们无法访问对象数据)。制作一个小玩具的例子会非常有帮助,也许可以使用内置的数据集,如mtcars
,例如data(mtcars)
会将内置的mtcars
data.frame加载到您的工作区中。在没有数据支持代码的情况下进行了太多的工作。
source("C:/Now/R/Rfunction_stepPlot.R")
fig17b <-stepPlot(Data=df17b,xVar= "age", yVar='mean_cumSumDurLeftByBeeAge',
LegendTitle="Precocious topical",GroupLabels=c("acetone", "untreated", "methoprene"),
Plottitle="weighed hive"
)+
geom_text(aes((min(df17b$age)+2), 3700, label="A"), colour="black",size=5)
plotFunction <- function (df, labelPosiY) {
df$xPos = df$cyl #add columns to the data frame
df$yPos = labelPosiY
p <- ggplot(data=df, aes(x=cyl, y=mpg)) + geom_step(aes(colour=gear, direction='hv',size=2))
p <- p + geom_text(aes(xPos, y=yPos, label="test"), colour="black",size=5)
return (p)
}
plotFunction(mtcars, 17)