前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R-ggplot2 基础图表绘制-散点图

R-ggplot2 基础图表绘制-散点图

作者头像
DataCharm
发布2021-02-22 15:29:52
1.1K0
发布2021-02-22 15:29:52
举报
文章被收录于专栏:数据 学术 商业 新闻

本期开始陆续推出基础图表的绘制推文教程,也算是自己的一个基础知识积累和巩固,希望和大家一同学习进步。这期的推文是关于散点图的绘制,主要知识点如下:

  • 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()),实现对文本个性化(如一行文本不同颜色、不同粗细以及刻度标签不同颜色等)设置。

最终的可视化效果如下:

总结

本期算是第一篇关于基础图表的绘制,各个细节部分我也进行了单独的代码解释,本来计划再搞些基础的,但那个效果实在是不能看,再说了,基础的教程网上的资源也很多。今后基础图表的绘制也都会按照这个样式(基础图表+美化),希望大家能够喜欢,并且有所获得。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DataCharm 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • R-ggplot2 散点图绘制
    • 数据预览
      • 数据可视化
      • ggplot2 散点图美化
        • hrbrthemes 主题美化包
          • 散点图美化操作
          • 总结
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档