超完整!QQ图绘制方法大汇总~~

超完整!QQ图绘制方法大汇总~~

今天这篇推文小编给大家介绍一些QQ图(Quantile-Quantile Plots) 的绘制方法,主要内容如下:

QQ图(Quantile-Quantile Plots)含义简单介绍QQ图(Quantile-Quantile Plots)绘制方法QQ图(Quantile-Quantile Plots)含义简单介绍「含义」:QQ图是用于验证一组数据是否符合正太分布,或者验证某两组数据是否来自同一分布情况,是一种散点图,通常情况下,其横坐标为标准正态分布的分位数,纵坐标为样本值。要利用QQ图判定测试样本数据是否近似于正态分布,只需看QQ图上的点是否近似地在一条直线附近,更多关于QQ图的含义理解,小伙伴们可自行搜索哈~~。QQ图样例如下(来源于网络):

QQ图样例参考

这里小编给大家推荐一个比较好的QQ图介绍视频资源,有条件的小伙伴可以看下哈,虽说是英文的,但是说的非常好,地址如下:https://www.youtube.com/watch?v=okjYjClSjOg。接下来,小编就汇总一下QQ图的R和Python绘制教程。

QQ图(Quantile-Quantile Plots)绘制方法QQ图R绘制教程「样例一」:ggplot2绘制

代码语言:javascript复制library(tidyverse)

library(ggtext)

library(hrbrthemes)

library(wesanderson)

library(LaCroixColoR)

library(RColorBrewer)

library(qqplotr)

library(ggsci)

#构造数据

df <- data.frame(y = rt(200, df = 5))

#可视化绘制

ggplot(df, aes(sample=y))+

stat_qq(shape=21,fill="gray",size=4,colour="black",stroke=.5) +

stat_qq_line(color="red") +

labs(x = "Theoretical Quantiles", y = "Sample Quantiles",

title = "Example of ggplot2::stat_qq function",

subtitle = "processed charts with stat_qq()",

caption = "Visualization by DataCharm") +

hrbrthemes::theme_ipsum(base_family = "Roboto Condensed") +

theme(

plot.title = element_markdown(hjust = 0.5,vjust = .5,color = "black",

size = 20, margin = margin(t = 1, b = 12)),

plot.subtitle = element_markdown(hjust = 0,vjust = .5,size=15),

plot.caption = element_markdown(face = 'bold',size = 12)

)

Example Of ggplot2::stat_qq()

「样例二」:R-qqplotr包绘制 这个R包是专门绘制QQ图的,这里小编简单介绍下常用方法,更多样例和语法请参考R-qqplotr包[1]。详细如下:

代码语言:javascript复制library(qqplotr)

set.seed(0)

smp <- data.frame(norm = rnorm(100))

ggplot(data = smp, mapping = aes(sample = norm)) +

stat_qq_band(alpha=.4) +

stat_qq_point(shape=21,size=4,fill="gray60",colour="black",stroke=.5) +

stat_qq_line(color="red") +

labs(x = "Theoretical Quantiles", y = "Sample Quantiles",

title = "Example of qqplotr::stat_qq_point__* function",

subtitle = "processed charts with stat_qq_point__*()",

caption = "Visualization by DataCharm"

) +

hrbrthemes::theme_ipsum(base_family = "Roboto Condensed") +

theme(

plot.title = element_markdown(hjust = 0.5,vjust = .5,color = "black",

size = 20, margin = margin(t = 1, b = 12)),

plot.subtitle = element_markdown(hjust = 0,vjust = .5,size=15),

plot.caption = element_markdown(face = 'bold',size = 12)

)

Example01 Of qqplotr QQ charts

注意:qqplotr包提供了stat_qq_band() 函数用于绘制区间,使QQ图更加易于理解。

「多类别」:

代码语言:javascript复制ggplot(data = smp, mapping = aes(sample = norm)) +

geom_qq_band(bandType = "ks", mapping = aes(fill = "KS"), alpha = 0.5) +

geom_qq_band(bandType = "ts", mapping = aes(fill = "TS"), alpha = 0.5) +

geom_qq_band(bandType = "pointwise", mapping = aes(fill = "Normal"), alpha = 0.3) +

geom_qq_band(bandType = "boot", mapping = aes(fill = "Bootstrap"), alpha = 0.5) +

stat_qq_point(shape=21,size=4,fill="gray60",colour="black",stroke=.5) +

stat_qq_line() +

labs(x = "Theoretical Quantiles", y = "Sample Quantiles",

title = "Example of qqplotr::stat__qq_point__* function",

subtitle = "processed charts with stat__qq_point__*()",

caption = "Visualization by DataCharm") +

ggsci::scale_fill_jco(name="Bandtype") +

hrbrthemes::theme_ipsum(base_family = "Roboto Condensed") +

theme(

plot.title = element_markdown(hjust = 0.5,vjust = .5,color = "black",

size = 20, margin = margin(t = 1, b = 12)),

plot.subtitle = element_markdown(hjust = 0,vjust = .5,size=15),

plot.caption = element_markdown(face = 'bold',size = 12),

)

Example02 Of qqplotr QQ charts

「分面绘制」:

代码语言:javascript复制data("barley", package = "lattice")

ggplot(data = barley, mapping = aes(sample = yield, color = site, fill = site)) +

stat_qq_band(alpha=0.5) +

stat_qq_line() +

stat_qq_point() +

ggsci::scale_color_nejm() +

ggsci::scale_fill_nejm() +

facet_wrap(~ site) +

labs(x = "Theoretical Quantiles", y = "Sample Quantiles",

title = "Example of qqplotr::stat_qq_point__* function",

subtitle = "processed charts with stat__qq_point__*()",

caption = "Visualization by DataCharm") +

hrbrthemes::theme_ipsum(base_family = "Roboto Condensed") +

theme(

plot.title = element_markdown(hjust = 0.5,vjust = .5,color = "black",

size = 20, margin = margin(t = 1, b = 12)),

plot.subtitle = element_markdown(hjust = 0,vjust = .5,size=15),

plot.caption = element_markdown(face = 'bold',size = 12),

)

Example03 Of qqplotr QQ charts + facet_wrap()

更多详细例子和绘图参数,小伙伴们可去qqplotr官网进行查询。

QQ图Python绘制教程Python 绘制QQ图主要借助其用于统计分析的statsmodels库和scipy库,样例如下:

「statsmodels库绘制」:

代码语言:javascript复制import numpy as np

import statsmodels.api as sm

import matplotlib.pyplot as plt

plt.rcParams['font.family'] = "Times New Roman"

# 构建数据

test = np.random.normal(0,1, 200)

# 开始绘图

fig,ax = plt.subplots(figsize=(6,5),dpi=100,)

ax.set_facecolor("white")

sm.qqplot(test, line='45',marker='.', markerfacecolor='gray', markeredgecolor='k',markeredgewidth=.5,

markersize=14,ax=ax)

ax.set_xlim((-3, 3.0))

ax.set_ylim((-3, 3.0))

ax.grid(linestyle="--",linewidth=.5,color="black")

ax.tick_params(direction='in',labelsize=13)

titlefontdict = {"size":17,"color":"k",'family':'Times New Roman'}

ax.set_title('Example Of QQ Plot In Python-Statsmodels Make',titlefontdict,pad=20)

ax.text(.82,.056,'\nVisualization by DataCharm',transform = ax.transAxes,

ha='center', va='center',fontsize = 10,color='black')

Example Of QQ Plot In Python-Statsmodels Make

注意:sm.qqplot()在绘制QQ图时,其定制化绘制的灵活性较大,可以对散点样式、颜色、大小、粗细等属性进行设置。更多内容可参考:gofplots.qqplot()[2]

「scipy库绘制」:

代码语言:javascript复制import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

from scipy import stats

fig,ax = plt.subplots(figsize=(6,5),dpi=100)

stats.probplot(test, plot=ax)

ax.set_xlim((-3, 3.0))

ax.set_ylim((-3, 3.0))

ax.grid(linestyle="--",linewidth=.5,color="black")

ax.tick_params(direction='in',labelsize=13)

titlefontdict = {"size":17,"color":"k",'family':'Times New Roman'}

ax.set_title('Example Of QQ Plot In Python-scipy Made',titlefontdict,pad=20)

ax.text(.82,.056,'\nVisualization by DataCharm',transform = ax.transAxes,

ha='center', va='center',fontsize = 10,color='black')

plt.savefig(r'G:\DataCharm\可视化包介绍(绘制)\QQ图绘制\QQ charts in Python-scipy.png',width=6,height=5.5,

dpi=900,bbox_inches='tight',facecolor='white')

Example Of QQ Plot In Python-scipy Made

可以看出:stats.probplot()绘制QQ图,其在定制化操作上有所不足,无法较灵活的设置颜色、边框宽度等属性。更多详细内容可参考:scipy.stats.probplot()[3]

以上就是就是对QQ图绘制的R和Python绘制方法介绍,详细内容小伙伴可参考文末参考资料~~

总结以上就是今天推文的内容,可能还有很多优秀的方法小编没有介绍到的,小伙伴们可自行探索哈,希望本期的推文内容可以帮助到你~~

参考资料[1]R-qqplotr包官网: https://aloy.github.io/qqplotr/。

[2]statsmodels.graphics.gofplots.qqplot: https://www.statsmodels.org/stable/generated/statsmodels.graphics.gofplots.qqplot.html。

[3]scipy.stats.probplot(): https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.probplot.html。

🌟 相关推荐

【Skullcandy是哪个国家的品牌?】
365bet亚洲版体育在线

【Skullcandy是哪个国家的品牌?】

📅 11-08 👀 9112
卡塔尔世界杯非洲球队有哪些国家_历届世界杯非洲球队
365bet亚洲版体育在线

卡塔尔世界杯非洲球队有哪些国家_历届世界杯非洲球队

📅 06-27 👀 924
微波光波组合的含义:厨房新科技的强大力量
365bet提款多久到

微波光波组合的含义:厨房新科技的强大力量

📅 09-30 👀 7406