平行坐标图是一种常用的多维数据可视化方式,可以用于快速发现有趣的数据模式以及数据的异常值。Python中有许多可用于绘制平行坐标图的工具,其中一种较为流行且易于上手的工具是plotly。下面是一个完整的攻略,用于指导读者如何使用Python的plotly库绘制平行坐标图。
第一步:导入库
在本攻略中,我们将使用Python的plotly库来绘制平行坐标图。在开始之前,需要先导入plotly库。Python的plotly库可以使用pip install plotly进行安装。
import plotly.express as px
第二步:准备数据
在构建平行坐标图之前,需要先准备好数据。在这个示例中,我们使用plotly自带的鸢尾花数据集进行演示。
df = px.data.iris()
第三步:绘制平行坐标图
使用plotly的parallel_coordinates函数绘制平行坐标图。
fig = px.parallel_coordinates(df, color="species_id", labels={"species_id": "Species",
"sepal_width": "Sepal Width", "sepal_length": "Sepal Length",
"petal_width": "Petal Width", "petal_length": "Petal Length", },
color_continuous_scale=px.colors.diverging.Tealrose,
color_continuous_midpoint=2)
fig.show()
- 第一个参数是数据框,该函数会使用数据框的每个维度作为平行坐标轴。
- 第二个参数是color参数,由于我们的数据集中包含了花的品种,我们可以使用该参数来对品种进行颜色编码。
- 第三个参数labels是用于将轴标签重命名,让它们更具描述性。
- color_continuous_scale参数用于指定颜色映射。
- color_continuous_midpoint参数用于指定颜色变化的中间点。
示例1:绘制通用平行坐标图
下面是一个更通用的平行坐标图示例,该示例展示如何将自己的数据转换为适合绘制平行坐标图的格式。
import plotly.graph_objs as go
import pandas as pd
# load data
df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/2011_february_us_airport_traffic.csv')
# transform data
categories = ['Average delay', 'Delay standard deviation', 'Airline', 'State']
dimensions = [dict(label=col, values=df[col]) for col in categories]
data = go.Parcoords(
line=dict(color=df['nb_flights'],
colorscale='Portland',
showscale=True,
colorbar=dict(thickness=20, ticklen=4)),
dimensions=dimensions,
labelangle=0
)
fig = go.Figure(data)
fig.show()
该示例使用美国机场2011年2月的公共数据集,将数据转换为适合绘制平行坐标图的格式,并使用plotly的parcoords函数绘制了平行坐标图。示例还使用线条颜色对航班数量进行了颜色编码。
示例2:平行坐标图中的交互式筛选
该示例展示如何为平行坐标图添加交互式筛选功能。
import plotly.graph_objs as go
import pandas as pd
# Load data
df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/2011_february_us_airport_traffic.csv')
# Transform data for parcoords
categories = ['Average delay', 'Delay standard deviation', 'Airline', 'State']
dimensions = [dict(label=col, values=df[col]) for col in categories]
# Create parcoords trace
line = dict(color=df['nb_flights'],
colorscale='Portland',
showscale=True,
reversescale=True,
colorbar=dict(thickness=20, ticklen=4))
data = go.Parcoords(dimensions=dimensions, line=line)
# Create plotly layout
updatemenus = [
dict(
buttons=list(
[
dict(
args=[{'line.color': df['nb_flights'],
'line.colorscale': 'Portland'}],
label='Cancer Deaths',
method='update'
),
dict(
args=[{'line.color': df['airline_index'],
'line.colorscale': 'Viridis'}],
label='Airline Index',
method='update'
)
]
),
direction='left',
pad={
'r': 10,
't': 10,
},
showactive=True,
type='buttons',
x=0.1,
xanchor='left',
y=1.2,
yanchor='top'
),
]
layout = go.Layout(updatemenus=updatemenus)
# Create Figure
fig = go.Figure(data=data, layout=layout)
fig.show()
该示例使用与示例1相同的数据集,但是提供了一个交互式菜单,可以用于在平行坐标图中动态筛选可见的数据点。交互式菜单使用plotly的updatemenus属性实现。
在菜单中,有两个选项卡可以选择。第一个选项卡"Cancer Deaths"将使用颜色编码来表示cancer deaths,第二个选项卡"Airline Index"将使用航空指数来表示颜色编码。当用户选择任何一个选项卡时,图表将更新并呈现所选选项的新颜色编码。
以上是Python实现平行坐标图的绘制(plotly)方式的完整攻略,包括准备数据、绘制平行坐标图和使用交互式筛选。该攻略提供了示例,可以帮助读者更好地理解如何使用Python的plotly库绘制平行坐标图。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现平行坐标图的绘制(plotly)方式 - Python技术站