R语言ggplot绘图「建议收藏」

R语言ggplot绘图「建议收藏」R语言ggplot绘折线图读取文件放置的位置,赋予数组名称library(ggplot2)setwd(“E:\\Buffer\\Mywork\\ggplot_data”)diameter<-read.csv(“0.031_0.062_ggplot_try.csv”,stringsAsFactors=FALSE)看看数组里的各种内容class(diameter)names(diameter)head(diameter)head(diameter,10)方法一用了中

大家好,欢迎来到IT知识分享网。

一、R语言ggplot2绘折线图

读取文件放置的位置,赋予数组名称

library(ggplot2)
setwd("E:\\Buffer\\My work\\ggplot_data")
diameter <- read.csv("0.031_0.062_ggplot_try.csv", stringsAsFactors = FALSE)

看看数组里的各种内容

class(diameter)
names(diameter)
head(diameter)
head(diameter,10)

方法一 用了中文宋体字

ggplot(data=diameter, aes(x=年份, y=冲悬比))+
theme(text=element_text(family="Songti SC",size=12,face = "bold"))
  geom_line()+ geom_point()

方法二 用了中文宋体字

ggplot()+
  geom_line(data=diameter,aes(x=年份, y=冲泻质输沙量(亿吨)))+ theme(text=element_text(family="Songti SC",size=12,face = "bold"))+
  geom_point(data=diameter,aes(x=年份, y=冲泻质输沙量(亿吨)))

方法三 调用可视化作图包 提取代码再修改

esquisse:::esquisser()   

ggplot(diameter) +
  aes(x = 年份, y = 冲泻质输沙量.亿吨.) +
  geom_line(size = 0.6, colour = "#B22222") +
  geom_point(size = 2, colour = "#B22222")+
  theme_gray()

做气泡图

esquisse:::esquisser()   
ggplot(diameter) +
  aes(x = 年份, y = 冲泻质输沙量, colour = 冲悬比, size = 冲泻质输沙量) +
  geom_point(shape = "circle") +
  scale_color_viridis_c(option = "viridis", direction = 1) +
  theme_gray()+
  theme(text=element_text(family="Songti SC",size=12,face = "bold"))

二、在ggplot中用乘幂(幂函数)的方法对散点进行曲线拟合

一般来说,简单的线性拟合和二次、三次等固定数学形式的拟合可以在geom_smooth当中完成。如下:

%曲线拟合
geom_smooth()
%线性拟合
geom_smooth(method = "lm",colour='#764C29',fill='#E7E1D7')

%其他拟合形式
geom_smooth(method="lm", formula= (y ~ exp(x)), se=FALSE, color=1)
geom_smooth(method="lm", formula= (log(y) ~ x), se=FALSE, color=2)
geom_smooth(method='lm',formula = y~x+ I(x^2),colour='red')

但没办法拟合一些复杂的函数,比如幂函数。

有一个R包basicTrendline,可以很方便实现,此包的优秀之处在于它可以一次性生成散点图的拟合曲线、拟合方程、判别系数R2和P值,并把这些内容显示在图上。

basicTrendline包可以使用函数“trendline”建立不同的拟合方程,只需要改变参数model的值就可以选择不同模型来拟合。参数“model”的值如line2P为一次函数,line3P为二次函数,log2P为对数函数,exp2P为指数函数,exp3P为指数函数(带常数项),power2P为幂函数,power3P为幂函数(带常数项)

%安装并引用包
#install.packages("basicTrendline")
library(basicTrendline)

%导入数据
setwd("E:\\Buffer\\My work\\ggplot_data")
Jianli1<- read.csv("water_flow_intensity_riverbed_Jianli1.csv", stringsAsFactors = FALSE)

%导入dataframe的第二列和第五列作为横纵坐标的变量
m<-Jianli1[1:15,2]
n<-Jianli1[1:15,5]

%用power3P来拟合x和y的散点
trendline(m,n,model="power3P")

结果如下:
在这里插入图片描述
但是很丑,需要对原代码进行稍微复杂的修改。

可以根据下面的网站修改参数,美化图像:

1、看trendline()相关参数
http://blog.sciencenet.cn/blog-651374-1126673.html

2、看plot相关参数,也可以用于trendline()中
https://www.jb51.net/article/207442.htm
https://www.jianshu.com/p/419d84e83548
http://blog.sciencenet.cn/blog-651374-979745.html

%加入科研字体
windowsFonts(HEL=windowsFont("Helvetica CE 55 Roman"),
             RMN=windowsFont("Times New Roman"),
             ARL=windowsFont("Arial"))
             
%把图画漂亮,并且使得输出SVG图形时中文不是方框
trendline(m,n,model="power3P",family="RMN",xlab="X取值",ylab="Y取值",linecolor="red",tck=-0.03,col = "orange",font=2,font.lab=2,cex.axis =0.9,las=1,pch=16,eSize =0.9,lty=2,text.col="blue",lwd=2,eDigit=5,summary=TRUE)

效果如下(我截图时去掉了xy轴标题,中文也能显现)
在这里插入图片描述

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/25041.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信