📜  绘制-箱形图小提琴图和轮廓图

📅  最后修改于: 2020-11-29 07:07:16             🧑  作者: Mango


本章着重于对各种曲线图的详细理解,包括箱形图,小提琴图,轮廓图和颤音图。最初,我们将从箱线图开始。

箱形图

箱形图显示了一组数据的摘要,其中包含最小值,第一四分位数,中位数,第三四分位数最大值。在箱形图中,我们从第一个四分位数到第三个四分位数绘制一个盒子。垂直线穿过中间的框。从框垂直延伸的线表示上下四分位数之外的变化,称为晶须。因此,箱形图也称为箱形和晶须图。晶须从每个四分位数到最小或最大。

箱形图

要绘制Box图表,我们必须使用go.Box()函数。可以将数据系列分配给x或y参数。因此,箱形图将水平或垂直绘制。在下面的示例中,某个公司在其各个分支机构中的销售数字将转换为水平箱形图。它显示了最小值和最大值的中位数。

trace1 = go.Box(y = [1140,1460,489,594,502,508,370,200])
data = [trace1]
fig = go.Figure(data)
iplot(fig)

相同的输出如下-

BoxPoints参数

可以给go.Box()函数各种其他参数,以控制箱形图的外观和行为。 boxmean参数就是这样的一种。

默认情况下, boxmean参数设置为true。结果,框内基本分布的平均值被绘制为框内的虚线。如果将其设置为sd,还将绘制分布的标准偏差。

默认情况下, boxpoints参数等于“离群值”。仅显示位于晶须外部的采样点。如果为“可疑离群值”,则显示离群点,并突出显示小于4“ Q1-3” Q3或大于4“ Q3-3” Q1的点。如果为“ False”,则仅显示没有样本点的框。

在下面的例子中,箱式跟踪被绘制标准偏差和离群点。

trc = go.Box(
   y = [
      0.75, 5.25, 5.5, 6, 6.2, 6.6, 6.80, 7.0, 7.2, 7.5, 7.5, 7.75, 8.15,
      8.15, 8.65, 8.93, 9.2, 9.5, 10, 10.25, 11.5, 12, 16, 20.90, 22.3, 23.25
   ],
   boxpoints = 'suspectedoutliers', boxmean = 'sd'
)
data = [trc]
fig = go.Figure(data)
iplot(fig)

相同的输出如下-

盒子痕迹

小提琴图

小提琴图类似于箱形图,不同之处在于它们还显示了不同值的数据概率密度。小提琴图将包含数据中位数的标记和一个指示四分位数范围的框,如标准框图所示。在该箱形图上叠加了一个核密度估计。像箱形图一样,小提琴图用来表示跨不同“类别”的变量分布(或样本分布)的比较。

小提琴图比普通箱图更具信息性。实际上,虽然箱形图仅显示摘要统计信息,例如均值/中位数和四分位数范围,但小提琴图却显示数据完整分布

小提琴跟踪对象由graph_objects模块中的go.Violin()函数返回。为了显示基础箱形图, boxplot_visible属性设置为True。同样,通过将meanline_visible属性设置为true,在小提琴中会显示一条与样本均值相对应的线。

以下示例演示了如何使用plotly的功能显示小提琴图。

import numpy as np
np.random.seed(10)
c1 = np.random.normal(100, 10, 200)
c2 = np.random.normal(80, 30, 200)
trace1 = go.Violin(y = c1, meanline_visible = True)
trace2 = go.Violin(y = c2, box_visible = True)
data = [trace1, trace2]
fig = go.Figure(data = data)
iplot(fig)

输出如下-

小提琴图

等高线图

二维等高线图显示了一个二维数字阵列z的轮廓线,即,内插z与isovalues线。两个变量的函数的轮廓线是一条曲线,函数沿该曲线具有常数值,因此该曲线将等值点连接在一起。

如果你想看到一个等高线图是如何恰当一些Z值变化的两个输入,XY的函数,使得Z = F(X,Y)。两个变量的函数的轮廓线或等值线是一条曲线,函数沿该曲线具有恒定值。

自变量x和y通常限于一个称为meshgrid的规则网格。 numpy.meshgrid从x值数组和y值数组创建一个矩形网格。

让我们首先使用Numpy库中的linspace()函数为x,y和z创建数据值。我们根据x和y值创建一个网格网格,并获得由x2 + y2的平方根组成的z数组

graph_objects模块中具有go.Contour()函数,该函数具有x, yz属性。以下代码片段显示了按上述方法计算的x, yz值的等高线图。

import numpy as np
xlist = np.linspace(-3.0, 3.0, 100)
ylist = np.linspace(-3.0, 3.0, 100)
X, Y = np.meshgrid(xlist, ylist)
Z = np.sqrt(X**2 + Y**2)
trace = go.Contour(x = xlist, y = ylist, z = Z)
data = [trace]
fig = go.Figure(data)
iplot(fig)

输出如下-

等高线图

可以通过以下一个或多个参数来自定义轮廓图-

  • 转置(布尔) -转置z数据。

如果xtype (或ytype )等于“ array”,则x / y坐标由“ x” /“ y”给出。如果“缩放”,则x坐标由“ x0”和“ dx ”给出。

  • connectgaps参数确定是否填充z数据中的间隙。

  • ncontours参数的默认值为15。轮廓的实际数量将自动选择为小于或等于“ ncontours”的值。仅在ʻautocontour`为“ True”时有效。

默认情况下,轮廓类型为:“ levels ”,因此数据表示为等高线图,其中显示了多个级别。如果为constrain ,则将数据表示为约束,并用操作参数指定的阴影遮盖无效区域。

showlines-确定是否绘制轮廓线。

zautoTrue默认和确定颜色域是否被计算的相对于所述输入数据(在这里`z`)或边界在“ZMIN并设置“ZMAX默认为“时`zmin`和zmax由用户设置。

箭袋图

颤动图也称为速度图。它将速度矢量显示为箭头,在点(x,y)上具有分量( u,v )。为了绘制Quiver图,我们将使用在Plotly的fig_factory模块中定义的create_quiver()函数。

Plotly的Python API中包含一个数字工厂模块,包括创建尚未列入plotly.js,Plotly的开源图形库独特的图表类型很多包装的功能。

create_quiver()函数接受以下参数-

  • 箭头位置的x − x坐标

  • 箭头位置的y -y坐标

  • 箭头向量的u − x分量

  • 箭头向量的v -y分量

  • 缩放-缩放箭头的大小

  • arrow_scale-箭头的长度。

  • 角度-箭头角度。

以下代码在Jupyter笔记本中呈现了一个简单的颤动图-

import plotly.figure_factory as ff
import numpy as np
x,y = np.meshgrid(np.arange(-2, 2, .2), np.arange(-2, 2, .25))
z = x*np.exp(-x**2 - y**2)
v, u = np.gradient(z, .2, .2)

# Create quiver figure
fig = ff.create_quiver(x, y, u, v,
scale = .25, arrow_scale = .4,
name = 'quiver', line = dict(width = 1))
iplot(fig)

代码的输出如下-

颤动图