可视化系列汇总——相关关系图形

引言

在进行数据分析时,免不了对结果进行可视化。那么,什么样的图形才最适合自己的数据呢?一个有效的图形应具备以下特点:

  • 能正确传递信息,而不会产生歧义;
  • 样式简单,但是易于理解;
  • 添加的图形美学应辅助理解信息;
  • 图形上不应出现冗余无用的信息。

本系列推文,小编将汇总可视化中常用 7 大类型图形,供读者参考。每类制作成一篇推文,主要参考资料为:Top 50 ggplot2 Visualizations。其他类似功能网站,资料包括:

  1. 庄闪闪的可视化笔记——常用图形

  2. R Graph Gallery

  3. 《R 语言教程》——ggplot 的各种图形

系列目录

本文主要介绍第一部分:相关关系图形。

加载数据集

使用 ggplot2 包中自带数据集作为示例数据集。

library(ggplot2)
library(plotrix)
data("midwest", package = "ggplot2") #加载数据集

midwest 数据集

全局主题设置

全局配色、主题设置。注意,本文使用离散色阶,如果需要使用连续色阶,则需要重写。

options(scipen=999)  # 关掉像 1e+48 这样的科学符号
# 颜色设置(灰色系列)
cbp1 <- c("#999999", "#E69F00", "#56B4E9", "#009E73",
          "#F0E442", "#0072B2", "#D55E00", "#CC79A7")

# 颜色设置(黑色系列)
cbp2 <- c("#000000", "#E69F00", "#56B4E9", "#009E73",
          "#F0E442", "#0072B2", "#D55E00", "#CC79A7")


ggplot <- function(...) ggplot2::ggplot(...) + 
  scale_color_manual(values = cbp1) +
  scale_fill_manual(values = cbp1) + # 注意: 使用连续色阶时需要重写
  theme_bw()

1. 相关关系

1.1 两个变量散点图

展示两个变量之间的相关关系,最常使用的是散点图。在 ggplot 中,使用geom_point()绘制。此外,默认情况下,geom_smooth 会绘制一条平滑线(基于 losses ),可以通过设置method='lm'来调整以绘制最佳拟合的线。

# Scatterplot
gg <- ggplot(midwest, aes(x=area, y=poptotal)) + 
  geom_point(aes(col=state, size=popdensity)) + 
  geom_smooth(method="loess", se=F) + 
  xlim(c(0, 0.1)) + 
  ylim(c(0, 500000)) + 
  labs(subtitle="Area Vs Population", 
       y="Population", 
       x="Area", 
       title="Scatterplot", 
       caption = "Source: midwest")

plot(gg)

两个变量散点图

1.2 环绕式散点图

使用 ggalt 包中的 geom_encircle() 函数可实现在散点图中圈选特定区域:

# install.packages("ggalt")
library(ggalt)
options(scipen = 999)
library(ggplot2)
library(ggalt)

## 设定筛选条件
midwest_select <- midwest[midwest$poptotal > 350000 & 
                            midwest$poptotal <= 500000 & 
                            midwest$area > 0.01 & 
                            midwest$area < 0.1, ]

# Plot
ggplot(midwest, aes(x=area, y=poptotal)) + 
  geom_point(aes(col=state, size=popdensity)) +   # draw points
  geom_smooth(method="loess", se=F) + 
  xlim(c(0, 0.1)) + 
  ylim(c(0, 500000)) +   # draw smoothing line
  geom_encircle(aes(x=area, y=poptotal), 
                data=midwest_select, 
                color="red", 
                size=2, 
                expand=0.08) +   # encircle
  labs(subtitle="Area Vs Population", 
       y="Population", 
       x="Area", 
       title="Scatterplot + Encircle", 
       caption="Source: midwest")

环绕式散点图

1.3 抖动图

抖动图可以解决数据点重叠的问题。通过 geom_jitter() 函数中的 width 参数设置抖动范围,重叠点在其原始位置周围随机抖动。

g <- ggplot(mpg, aes(cty, hwy))
g + geom_jitter(width = .5, size=1) +
  labs(subtitle="mpg: city vs highway mileage", 
       y="hwy", 
       x="cty", 
       title="Jittered Points")

抖动图

1.4 计数图

克服数据点重叠问题的第二个选择是使用计数图 geom_count()。重叠点越多,圆就越大。

g + geom_count(col="tomato3", show.legend=F) +
  labs(subtitle="mpg: city vs highway mileage", 
       y="hwy", 
       x="cty", 
       title="Counts Plot")

计数图

1.5 气泡图

气泡图适合 4 维数据,其中两个是数值型(分别是 X 和 Y),另一个是分类变量(用 color 表示)和另一个数值变量(用 size 表示)。

data(mpg, package="ggplot2")

mpg_select <- mpg[mpg$manufacturer %in% c("audi", "ford", "honda", "hyundai"), ]

# Scatterplot
theme_set(theme_bw())  # pre-set the bw theme.
g <- ggplot(mpg_select, aes(displ, cty)) + 
  labs(subtitle="mpg: Displacement vs City Mileage",
       title="Bubble chart")

g + geom_jitter(aes(col=manufacturer, size=hwy)) + 
  geom_smooth(aes(col=manufacturer), method="lm", se=F)

气泡图

1.6 边际直方图/箱线图

如果您想在同一个图中显示变量的关系和分布,可以使用边际直方图。更改 ggMarginal() 函数中的 type 参数可以将边际直方图换成箱线图或者密度图。

library(ggExtra)
data(mpg, package="ggplot2")

# Scatterplot
theme_set(theme_bw())  
mpg_select <- mpg[mpg$hwy >= 35 & mpg$cty > 27, ]
g <- ggplot(mpg, aes(cty, hwy)) + 
  geom_count() + 
  geom_smooth(method="lm", se=F)

ggMarginal(g, type = "histogram", fill="transparent")

ggMarginal(g, type = "boxplot", fill="transparent")

ggMarginal(g, type = "density", fill="transparent")

1.7 相关系数图

相关系数图可以查看同一组数据中多个连续变量的相关性。

library(ggcorrplot)

# Correlation matrix
data(mtcars)
corr <- round(cor(mtcars), 1)

# Plot
ggcorrplot(corr, hc.order = TRUE, 
           type = "lower", 
           lab = TRUE, 
           lab_size = 3, 
           method="circle", 
           colors = c("tomato2", "white", "springgreen3"), 
           title="Correlogram of mtcars", 
           ggtheme=theme_bw)

相关系数图

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一份关于西安地铁客流量分析的数据可视化课程设计: 1. 课程目标:通过本课程的学习,学生将能够了解数据可视化的基础知识和技术,掌握如何使用数据可视化工具分析和展示西安地铁的客流量数据,提高学生的数据分析和可视化能力。 2. 课程内容: (1)数据类型和格式:介绍常见的数据类型和格式,包括文本、表格、像、JSON等。 (2)数据准备和清洗:讲解如何准备和清洗数据,包括数据获取、数据预处理、数据清洗等。 (3)可视化工具和技术:介绍常见的数据可视化工具和技术,包括Python的Matplotlib、Seaborn、Plotly等,以及Tableau、PowerBI等商业工具。 (4)数据分析和可视化案例:通过具体的案例分析,让学生了解如何使用数据可视化工具分析和展示西安地铁的客流量数据,例如客流量的时间分布、空间分布、高峰期客流量分析等。 3. 教学方法:采用讲解、案例分析、实践操作、小组讨论等教学方法,以满足学生的不同需求和学习风格。 4. 课程评估:设计实践项目和考试,以检验学生的学习效果和能力。实践项目可以要求学生使用具体的数据可视化工具完成西安地铁客流量数据的分析和展示,考试可以采用选择题、填空题、简答题等形式。 5. 资源准备:准备必要的教学资源,例如PPT、教材、参考书籍、数据集等,以帮助学生更好地理解课程内容和实践操作。数据集可以从公开的数据源中获取,例如西安地铁公司官网、国家数据等。 6. 实践项目:设计实践项目,让学生使用具体的数据可视化工具完成西安地铁客流量数据的分析和展示。可以要求学生在特定的时间段内,收集某一地铁站的客流量数据,并使用数据可视化工具展示数据分析结果,例如时间序列、热力、地等。 以上是一份关于西安地铁客流量分析的数据可视化课程设计,希望能对您有所帮助。如果您需要更加具体的帮助或者有其他问题,欢迎随时向我提出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值