R语言绘制拟合散点图时如何标注坐标轴上红色点对应的数值
实现方法
你可以直接使用R基础绘图系统的text()函数为该红色标记点添加数值标注,只需要在你绘制红色点的代码后追加标注代码即可,调整pos参数可以控制标注相对于点的位置(1为下方、2为左侧、3为上方、4为右侧),避免标注和坐标轴、红点重叠。
完整可运行代码
library(dplyr) library(lubridate) library(tidyverse) df1 <- structure( list(date1 = c("2021-06-28","2021-06-28","2021-06-28","2021-06-28","2021-06-28", "2021-06-28","2021-06-28","2021-06-28"), date2 = c("2021-04-02","2021-04-03","2021-04-08","2021-04-09","2021-04-10","2021-07-01","2021-07-02","2021-07-03"), Week= c("Friday","Saturday","Thursday","Friday","Saturday","Thursday","Friday","Monday"), DR01 = c(14,11,14,13,13,14,13,16), DR02= c(14,12,16,17,13,12,17,14),DR03= c(19,15,14,13,13,12,11,15), DR04 = c(15,14,13,13,16,12,11,19),DR05 = c(15,14,15,13,16,12,11,19), DR06 = c(21,14,13,13,15,16,17,18),DR07 = c(12,15,14,14,19,14,17,18)), class = "data.frame", row.names = c(NA, -8L)) #Generate graph dmda<-"2021-07-01" datas<-df1 %>% filter(date2 == ymd(dmda)) %>% summarize(across(starts_with("DR"), sum)) %>% pivot_longer(everything(), names_pattern = "DR(.+)", values_to = "val") %>% mutate(name = as.numeric(name)) colnames(datas)<-c("Days","Numbers") plot(Numbers ~ Days, xlim=c(0,8), ylim=c(0,20), data = datas,xaxs='i') model <- nls(Numbers ~ b1*Days^2+b2,start = list(b1 = 47,b2 = 0), data = datas) new.data <- data.frame(Days = with(datas, seq(min(Days),max(Days),len = 45))) new.data <- rbind(0, new.data) lines(new.data$Days, predict(model, newdata=new.data)) points(0, coef(model)[2], col="red", pch=19, cex=1.2, xpd=TRUE) # 新增标注代码:在红点右侧显示数值,保留2位小数 text(x = 0, y = coef(model)[2], labels = round(coef(model)[2],2), pos = 4, col = "red", cex = 0.9)
如果需要调整标注的样式,可以修改cex(字号)、font(字体粗细)等参数即可。
内容的提问来源于stack exchange,提问作者user16774617
相关产品推荐
相关产品推荐

