Python中的多维图形-从三维到六维

多维图的示例

引言


可视化是数据分析的重要组成部分,并且能够同时查看多个维度的功能使此任务更加容易。 在本教程中,我们将绘制最多6个维度的图形。


Plotly是一个开放源代码的Python库,用于各种可视化,它比著名的matplotlibseaborn提供了更多的自定义功能 。 该模块按常规安装-pip installplot 。 我们将使用它来绘制图形。


准备数据


为了进行可视化,我们使用来自UCI (加利福尼亚大学欧文分校-大约翻译)的 汽车的简单数据 ,这些数据代表205辆汽车的26个特征(205 列为 26列)。 为了可视化六个维度,我们采用了这六个参数。


205条中仅显示4条线。

使用pandas从CSV下载数据。


import pandas as pd data = pd.read_csv("cars.csv") 

现在,准备好了,让我们从两个维度开始。


二维散点图


散点图是一个非常简单且常见的图。 在这6个参数中,以下将价格整备重量分别用作YX。


 #    import plotly import plotly.graph_objs as go #  figure fig1 = go.Scatter(x=data['curb-weight'], y=data['price'], mode='markers') #  layout mylayout = go.Layout(xaxis=dict(title="curb-weight"), yaxis=dict( title="price")) #     HTML plotly.offline.plot({"data": [fig1], "layout": mylayout}, auto_open=True) 

在plotly中,该过程与Matplotlib中的过程略有不同。 我们必须创建一个布局图形 ,然后将它们传递给offline.plot函数,然后将结果保存在当前工作目录的HTML文件中。 这是发生的情况的屏幕截图。 在文章的结尾,将有一个指向GitHub存储库的链接,其中包含现成的交互式HTML图形。


二维散点图

3D散点图


我们可以在Z轴上添加第三个功率参数(功率量)。 Plotly提供了Scatter3D功能,用于构建交互式3D图形。


3D图

我没有每次都在此处粘贴代码,而是将其添加到存储库中。


(最方便的做法是在相邻标签中查看相关代码 ,同时阅读-大约翻译)。


添加第四维度


我们知道您不能直接使用三个以上的尺寸,但是有一种解决方法:我们可以使用颜色,尺寸或形状来模拟深度以可视化更高的尺寸。


在这里,连同前面的三个特征,我们将使用城市里程-city -mpg作为第四维, Scatter3D函数的markercolor参数将负责该 。 标记的阴影变浅将意味着行驶里程减少。


显而易见的是,价格,马匹数量和质量越高,行驶里程越低。


阴影为第4维的4D图形

添加第五维度


标记大小可用于可视化第5维。 我们将引擎大小特征用于Scatter3D函数的markersize参数。


观察结果:发动机尺寸与先前的某些参数有关。 价格越高,引擎越大。 以及:更低的里程-更多的引擎。


5D图形,标记值为第五维(电机尺寸)

添加第六维


标记的形状非常适合可视化类别。 通过Plotly,您可以选择10种不同的3D图形形状(星号,圆形,正方形等)。 因此,最多可以显示10个不同的值。


我们具有特征性的num-of-doors ,其中包含整数-门的数量(2或4)。 我们将这些值转换为数字:一个正方形用于4个门,一个圆圈用于2个门。 使用Scatter3D函数的markersymbol参数。


观察结果:好像所有最便宜的汽车都有4门(圆形)。 通过继续研究时间表,可以做出更多的假设和结论。


以标记形状为第六维的6D图形(门数)

我们可以添加更多尺寸吗?


当然可以! 标记具有更多可以启用的属性,例如不透明度和渐变。 但是,我们添加的尺寸越多,将它们全都放在头脑中就越困难。


源代码


GitHub上提供了所有形状的Python代码和交互式图形

Source: https://habr.com/ru/post/zh-CN456282/


All Articles