本期开始陆续推出基础图表的绘制推文教程,也算是自己的一个基础知识积累和巩固,希望和大家一同学习进步。这期的推文是关于散点图的绘制,主要知识点如下:
- R-ggplot2 散点图绘制
- ggplot2 散点图美化
(毕竟好看的图表设计会使人眼前一亮,当然也会增加自己的学习兴趣)
R-ggplot2 散点图绘制
数据预览
ggplot2 对于绘制目前所见的图表都是有对应的绘图函数可以绘制,后面我们陆续介绍。这次使用的函数为geom_point(),而所使用的数据集为可用于替代iris数据且用于数据探索和可视化展示的全新数据集,数据预览如下:
数据可视化
我们直接使用geom_point()方法进行绘制,添加必要的修饰,代码如下:
代码语言:javascript复制scatter_pir <- ggplot(data = penguins_df,aes(x = bill_length_mm, y = bill_depth_mm))
geom_point(aes(fill = species,size=body_mass_g),shape = 21,alpha=.8,
color = "transparent")
#在外面家里白色圆框
geom_point(aes(size = body_mass_g),
shape = 21,
color = "white",
fill = "transparent",
)
labs(x = "Bill length (mm)",
y = "Bill depth (mm)",
title = "Base Charts Exercise 01: Point Charts",
subtitle = "original scatter charts",
caption = "Visualization by DataCharm")
scatter_pir
可视化结果如下:
可以看出,默认的ggplot2 绘图主题(配色、排版等)都是差强人意,接下来我们借用第三方包hrbrthemes以及对 theme() 定制化设置,使其颜值升级。
ggplot2 散点图美化
hrbrthemes 主题美化包
hrbrthemes 包作为一个优秀的ggplot2第三方包,其强大的绘图主题设置(字体、背景、网格等绘图属性)功能可以帮你节省宝贵的时间,让你专注于数据本身。这里建议大家在熟悉ggplot2绘图原理之后,可以考虑使用该包作为自己的绘图主题,当然,在面对不同的绘图需求时,自己也可以进行主题的定制操作。更多关于该包的介绍,可以去官网查看-hrbrthemes官网。
散点图美化操作
我们接着上面的绘图进行美化,修改ggplot2 默认的绘图风格,具体代码如下:
代码语言:javascript复制color <- c("#FF8C00", "#A034F0", "#159090")
scatter_pro <- ggplot(data = penguins_df,aes(x = bill_length_mm, y = bill_depth_mm))
geom_point(aes(fill = species,size=body_mass_g),shape = 21,alpha=.8,
color = "transparent")
#在外面家里白色圆框
geom_point(aes(size = body_mass_g),
shape = 21,
color = "white",
fill = "transparent",
)
scale_fill_manual(values = color,name = "")
scale_size(
name = "",
breaks = 3:6 * 1000,
labels = c("3 kg", "4 kg", "5 kg", "6 kg")
)
#对图例进行设置
guides(size=guide_legend(label.position = "bottom",
override.aes = list(color=color[2],stroke=.9,fill=NA)),
fill = guide_legend(label.position = "bottom",
override.aes = list(size=5)))
labs(x = "Bill length (mm)",
y = "Bill depth (mm)",
title = "Base Charts in R Exercise 01: <span style='color:#D20F26'>Point Charts</span>",
subtitle = "processed scatter charts",
caption = "Visualization by <span style='color:#DD6449'>DataCharm</span>")
theme_ipsum(base_family = "Arial_Narrow")
theme(
plot.title = element_markdown(hjust = 0.5,vjust = .5,color = "black",
size = 22, margin = margin(t = 1, b = 12)),
plot.subtitle = element_markdown(hjust = 0,vjust = .5,size=15),
plot.caption = element_markdown(face = 'bold',size = 12),
legend.position = c(.1, .1),
#legend.position = "bottom",
legend.direction = "horizontal",
#legend.justification = "right",
legend.key.width = unit(.01, "lines"),
legend.text = element_text(size = 8, color = "grey50"))
scatter_pro
这里注意下以下代码:
代码语言:javascript复制 scale_size(
name = "",
breaks = 3:6 * 1000,
labels = c("3 kg", "4 kg", "5 kg", "6 kg")
)
实现对size映射的定制化设置,包括刻度(breaks)、刻度标签(labels)。
代码语言:javascript复制#对图例进行设置
guides(size=guide_legend(label.position = "bottom",
override.aes = list(color=color[2],stroke=.9,fill=NA)),
fill = guide_legend(label.position = "bottom",
override.aes = list(size=5)))
则实现了对图例(legend) 的定制化设置了,这部分掌握了,网上的那种优秀且常见的图例就可以绘制出来了。
代码语言:javascript复制theme(
plot.title = element_markdown(hjust = 0.5,vjust = .5,color = "black",
size = 22, margin = margin(t = 1, b = 12)),
plot.subtitle = element_markdown(hjust = 0,vjust = .5,size=15),
plot.caption = element_markdown(face = 'bold',size = 12),
legend.position = c(.1, .1),
#legend.position = "bottom",
legend.direction = "horizontal",
#legend.justification = "right",
legend.key.width = unit(.01, "lines"),
legend.text = element_text(size = 8, color = "grey50"))
主题设置里,则结合ggtext包的文本定制化设置(element_markdown()),实现对文本个性化(如一行文本不同颜色、不同粗细以及刻度标签不同颜色等)设置。
最终的可视化效果如下:
总结
本期算是第一篇关于基础图表的绘制,各个细节部分我也进行了单独的代码解释,本来计划再搞些基础的,但那个效果实在是不能看,再说了,基础的教程网上的资源也很多。今后基础图表的绘制也都会按照这个样式(基础图表 美化),希望大家能够喜欢,并且有所获得。