文章目录
- R语言绘图——实用篇 ggplot2绘图
- 绘制等值线图相关
- 如何绘制等值线图
- 插值,平滑插值
- 插值,缺失值插值
- 色条(色阶)划分
- 图例的色条(色阶)修改,合理的参数值选用
- 图例的色条(色阶)修改,刻度线修改无效或不显示的问题
- 地图绘制相关
- 给指定点添加标签,标签过于密集相互叠加
- 横纵坐标添加经纬度
- 分面绘制相关
- 分面名称
- 曲线显示线性回归公式
- 日期时间相关
- R语言中的日期时间类型
- 生成日期时间序列
- 日期时间表示坐标轴标签,格式化输出
- `strptime()`与`as.POSIXct()`
- 文字编码相关
- 添加特殊符号
- 中文乱码问题、不显示中文
- 中英文字体混杂情况
- 图片输出相关
- 如何输出清晰度更高的图片、受不了直线锯齿
- 参考
2020.12.31—更新中,有同样问题的可以私信我,我先补充相应部分。
R语言绘图——实用篇 ggplot2绘图
想想网上的基础教程还是蛮多的,这篇直接列出花了自己比较多时间处理的问题吧。
图像元素(坐标轴、图例)调整可以直接参考官方的ggplot2 function reference。
绘制等值线图相关
如何绘制等值线图
官方给的例子如下
v <- ggplot(faithfuld, aes(waiting, eruptions, z=density))
v + geom_contour_filled()
faithfuld
是内置数据集faithful
的二维密度估计版,描述黄石公园老忠实泉喷发时间与间歇时间。
此外,绘制等值线图的函数有,
函数名 | 介绍 |
---|---|
geom_contour_filled() stat_contour_filled() | 绘制3维数据的等值线图,重要aes参数为x、y、z |
geom_raster() | 重要参数为x、y、fill,可进行平滑插值,但x、y必须为均匀分布 |
geom_tile() geom_rect() | x、y不必为均匀分布,无法进行平滑插值 |
metR::geom_contour_fill() | 在ggplot2::geom_contour_filled() 出现前由Elio Campitelli编写并维护,用作气象学数据分析的包 |
使用geom_contour_filled()
时请注意自己的R和ggplot2版本,提示"could not find function “geom_contour_filled”"时检查ggplot2版本是否在3.3.0或以上。
插值,平滑插值
使用geom_raster()
可以让图像更平滑,参数interpolate
默认值为FALSE
v + geom_raster(aes(fill=density), interpolate=TRUE)
插值,缺失值插值
x、y不均匀分布时使用geom_raster()
控制台会给出警告:“Raster pixels are placed at uneven horizontal intervals and will be shifted. Consider using geom_tile() instead.”
来给数据集添加些数据看下效果
aux <- rbind(faithfuld,data.frame("eruptions"=faithfuld[faithfuld$waiting==96,]$eruptions,"waiting"=98,"density"=rnorm(length(rownames(faithfuld)), 0.015, 0.004)))
vu <- ggplot(aux, aes(waiting, eruptions, z=density))
vu + geom_raster(aes(fill=density))
缺失部分不会程序不会自动计算插值。
使用geom_contour_filled()
或metR::geom_contour_fill()
则会对缺失值进行插值处理。相比ggplot2
内置的,metR
版提供插值方法参数na.fill。
vu + geom_contour_filled()
vu + geom_contour_fill()
色条(色阶)划分
图例的色条(色阶)修改,合理的参数值选用
图例的色条(色阶)修改,刻度线修改无效或不显示的问题
地图绘制相关
给指定点添加标签,标签过于密集相互叠加
横纵坐标添加经纬度
分面绘制相关
分面名称
曲线显示线性回归公式
日期时间相关
R语言中的日期时间类型
生成日期时间序列
日期时间表示坐标轴标签,格式化输出
strptime()
与as.POSIXct()
Invalid input: time_trans works with objects of class POSIXct only