viz” API

viz API 参考

probscale.viz.probplot(data, ax=None, plottype='prob', dist=None, probax='x', problabel=None, datascale='linear', datalabel=None, bestfit=False, return_best_fit_results=False, estimate_ci=False, ci_kws=None, pp_kws=None, scatter_kws=None, line_kws=None, **fgkwargs)[source]

概率图、百分位数图和分位数图。

参数

data : 类数组

要绘制的一维数据

ax : matplotlib 轴,可选

要绘图的轴。如果未提供,则将创建一个新轴。

plottype : 字符串 (默认值 = ‘prob’)

要创建的图类型。选项包括:

  • ‘prob’: 概率图
  • ‘pp’: 百分位数图
  • ‘qq’: 分位数图

dist : scipy 分布,可选

用于计算刻度位置的分布。如果未指定,将使用标准正态分布。

probax : 字符串,可选 (默认值 = ‘x’)

将用作概率(或分位数)轴的轴(‘x’ 或 ‘y’)。

problabel, datalabel : 字符串,可选

分别用于概率/分位数轴和数据轴的标签。

datascale : 字符串,可选 (默认值 = ‘log’)

其他轴的刻度,该轴不是

bestfit : 布尔值,可选 (默认值为 False)

指定是否应向图中添加最佳拟合线。

return_best_fit_results : 布尔值 (默认值为 False)

如果为 True,则返回一个结果字典以及图。

estimate_ci : 布尔值,可选 (False)

使用百分位数自举法估算并绘制最佳拟合线周围的置信带。

ci_kws : 字典,可选

直接传递给 viz.fit_line 的关键字参数字典,用于计算最佳拟合线时使用。

pp_kws : 字典,可选

直接传递给 viz.plot_pos 的关键字参数字典,用于计算绘图位置时使用。

scatter_kws, line_kws : 字典,可选

直接传递给 ax.plot 的关键字参数字典,分别用于绘制散点和最佳拟合线时使用。

返回

fig : matplotlib.Figure

绘制图表的图形对象。

result : 包含线性拟合结果的字典,可选

键包括:

  • q : 分位数数组
  • x, y : 传递给函数的数据数组
  • xhat, yhat : 在最佳拟合线中绘制的建模数据数组
  • res : 最佳拟合线的系数数组。
其他参数
 

color : 字符串,可选

一个直接指定的matplotlib颜色参数,用于数据系列和最佳拟合线(如果绘制)。此参数是为了与seaborn包兼容而提供,不建议一般使用。相反,颜色应在 scatter_kwsline_kws 中指定。

注意

用户不应指定此参数。它仅供seaborn在 FacetGrid 中操作时使用。

label : 字符串,可选

一个直接指定的数据系列图例标签。此参数是为了与seaborn包兼容而提供,不建议一般使用。相反,数据系列标签应在 scatter_kws 中指定。

注意

用户不应指定此参数。它仅供seaborn在 FacetGrid 中操作时使用。

另请参阅

viz.plot_pos, viz.fit_line, numpy.polyfit, scipy.stats.probplot, scipy.stats.mstats.plotting_positions

示例

Y轴上显示概率的概率图

>>> import numpy; numpy.random.seed(0)
>>> from matplotlib import pyplot
>>> from scipy import stats
>>> from probscale.viz import probplot
>>> data = numpy.random.normal(loc=5, scale=1.25, size=37)
>>> fig = probplot(data, plottype='prob', probax='y',
...          problabel='Non-exceedance probability',
...          datalabel='Observed values', bestfit=True,
...          line_kws=dict(linestyle='--', linewidth=2),
...          scatter_kws=dict(marker='o', alpha=0.5))
../_images/viz-1.png

X轴上显示分位数的分位数图

>>> fig = probplot(data, plottype='qq', probax='x',
...          problabel='Theoretical Quantiles',
...          datalabel='Observed values', bestfit=True,
...          line_kws=dict(linestyle='-', linewidth=2),
...          scatter_kws=dict(marker='s', alpha=0.5))
../_images/viz-2.png
probscale.viz.plot_pos(data, postype=None, alpha=None, beta=None)[source]

计算数据集的绘图位置。大量借鉴了 scipy.stats.mstats.plotting_positions

绘图位置定义为: (i-alpha)/(n+1-alpha-beta) ,其中

  • i 是排名顺序
  • n 是数据集的大小
  • alphabeta 是用于调整位置的参数。

alphabeta 的值可以显式设置。典型值也可以通过 postype 参数访问。可用的 postype 值 (alpha, beta) 如下:

“类型 4” (alpha=0, beta=1)
经验CDF的线性插值。
“类型 5” 或 “hazen” (alpha=0.5, beta=0.5)
分段线性插值。
“类型 6” 或 “weibull” (alpha=0, beta=0)
Weibull绘图位置。所有分布的无偏超额概率。推荐用于水文应用。
“类型 7” (alpha=1, beta=1)
R中的默认值。不推荐用于概率刻度,因为最小和最大数据点分别获得0和1的绘图位置,因此无法显示。
“类型 8” (alpha=1/3, beta=1/3)
近似中位数无偏。
“类型 9” 或 “blom” (alpha=0.375, beta=0.375)
如果数据呈正态分布,则近似为无偏位置。
“中位数” (alpha=0.3175, beta=0.3175)
所有分布的中位数超额概率 (在 scipy.stats.probplot 中使用)。
“apl” 或 “pwm” (alpha=0.35, beta=0.35)
与概率加权矩一起使用。
“cunnane” (alpha=0.4, beta=0.4)
正态分布数据的近似无偏分位数。这是默认值。
“gringorten” (alpha=0.44, beta=0.44)
用于Gumble分布。
参数

data : 类数组

需要计算其绘图位置的值。

postype : 字符串,可选 (默认值: “cunnane”)

alpha, beta : 浮点数,可选

如果通过 postype 参数提供的选项不足,则使用自定义绘图位置参数。

返回

plot_pos : numpy.array

计算出的已排序绘图位置。

data_sorted : numpy.array

原始数据值,已排序。

参考

http://artax.karlin.mff.cuni.cz/r-help/library/lmomco/html/pp.html http://astrostatistics.psu.edu/su07/R/html/stats/html/quantile.html https://docs.scipy.org.cn/doc/scipy-0.17.0/reference/generated/scipy.stats.probplot.html https://docs.scipy.org.cn/doc/scipy-0.17.0/reference/generated/scipy.stats.mstats.plotting_positions.html

probscale.viz.fit_line(x, y, xhat=None, fitprobs=None, fitlogs=None, dist=None, estimate_ci=False, niter=10000, alpha=0.05)[source]

将直线拟合到各种形式(线性、对数、概率刻度)的x-y数据。

参数

x, y : 类数组

分别为自变量数据和因变量数据。

xhat : 类数组,可选

应估计 yhat 的值。如果未提供,则回退到 x 的排序值。

fitprobs, fitlogs : 字符串,可选。

定义数据应如何转换。有效值为 ‘x’、‘y’ 或 ‘both’。如果使用 fitprobs,变量应表示为百分比,即,对于概率转换,数据将使用 lambda x: dist.ppf(x / 100.) 进行转换。对于对数转换,使用 lambda x: numpy.log(x)。请注意不要将相同的值同时传递给 fitlogsfigprobs,因为两种转换都将被应用。

dist : 分布,可选

一个完全指定的scipy.stats类分布对象,使得可以调用 dist.ppfdist.cdf。如果未提供,则默认为 scipt.stats.norm 的最小实现。

estimate_ci : 布尔值,可选 (False)

使用百分位数自举法估算并绘制最佳拟合线周围的置信带。

niter : 整数,可选 (默认值 = 10000)

如果提供了 estimate_ci,则自举迭代次数。

alpha : 浮点数,可选 (默认值 = 0.05)

自举估计的置信水平。

返回

xhat, yhat : numpy 数组

xy 的线性模型估计。

results : 字典

线性拟合结果的字典。键包括:

  • slope (斜率)
  • intercept (截距)
  • yhat_lo (估计y值的置信区间下限)
  • yhat_hi (估计y值的置信区间上限)