介绍
Python-Plotly是一个数据可视化库,它可以用来创建各种类型的图形,包括散点图。散点图是一种用于描述两个变量之间关系的图形,通常用于研究或可视化数据的分布状况。在这篇文章中,我们将介绍如何在Python中使用Plotly来创建基本散点图。
准备
在开始之前,我们需要安装并导入Plotly库以及一些其他必要的库。确保您已经安装了Plotly,您可以使用以下命令来安装它:
!pip install plotly
安装完毕后,您需要导入所需的库。这里我们还需要使用numpy和pandas库来生成数据,同时使用Plotly的离线模式以及其图形对象。
import plotly.offline as pyo
import plotly.graph_objs as go
import numpy as np
import pandas as pd
数据生成
在创建散点图之前,我们需要准备数据。这里我们将通过使用numpy和pandas库随机生成一些数据。具体来说,我们将生成两个数组,X和Y,每个数组包含100个随机数。我们还将使用np.random.randn(100)函数来生成一些噪声,使得数据更真实。
# 随机生成100个X和Y数据
X = np.random.randn(100)
Y = np.random.randn(100)
# 添加一些噪声
noise = np.random.randn(100) / 10
# 计算出新的Y值
Y = Y + noise
# 将数据转换为数据帧
df = pd.DataFrame({'x': X, 'y': Y})
我们还可以使用Pandas数据帧和虚拟数据来生成分类数据,这将为散点图添加另一个维度。
df = pd.DataFrame({'Category': ['A', 'B', 'C', 'D'],
'x': [1, 2, 3, 4],
'y': [30, 25, 45, 20]})
基本散点图
在准备好数据后,我们可以创建基本的散点图。为了创建散点图,我们需要创建一个散点图对象,并设置数据和图像属性。在这里,我们将使用go.Scatter来创建散点图,将数据传递给x和y参数,并使用'marker'参数设置标记样式和颜色。
# 创建散点图数据
data = [go.Scatter(x=df['x'], y=df['y'], mode='markers',
marker=dict(size=12, color='red'))]
# 设置图像布局和标题
layout = go.Layout(title='Basic Scatterplot')
# 绘制散点图
fig = go.Figure(data=data, layout=layout)
pyo.plot(fig)
这样就创建了一个简单的散点图,其中每个点都是红色的圆圈。
多组数据散点图
散点图可以用于比较多组数据之间的关系。下面我们将演示如何使用Plotly创建一个包含多组散点图的图像。为此,我们需要创建多个散点图对象,并将它们添加到同一个figure对象中。
# 创建四组数据
x1 = np.random.randn(200) - 2
y1 = np.random.randn(200) - 2
x2 = np.random.randn(200)
y2 = np.random.randn(200)
x3 = np.random.randn(200) + 2
y3 = np.random.randn(200) + 2
x4 = np.random.randn(200) + 4
y4 = np.random.randn(200) + 4
# 创建四个散点图对象
trace1 = go.Scatter(x=x1, y=y1, mode='markers',
marker=dict(size=6, color='blue'))
trace2 = go.Scatter(x=x2, y=y2, mode='markers',
marker=dict(size=6, color='green'))
trace3 = go.Scatter(x=x3, y=y3, mode='markers',
marker=dict(size=6, color='red'))
trace4 = go.Scatter(x=x4, y=y4, mode='markers',
marker=dict(size=6, color='orange'))
# 将四个散点图对象添加到数据列表中
data = [trace1, trace2, trace3, trace4]
# 设置布局和标题
layout = go.Layout(title='Multiple Scatterplot')
# 创建figure对象并绘图
fig = go.Figure(data=data, layout=layout)
pyo.plot(fig)
这样就创建了一个包含四个散点图的图像。
分类散点图
分类散点图是一种特殊的散点图,它将数据分组并用不同的符号和颜色表示。在这里,我们将使用虚拟数据来创建一个分类散点图。要创建分类散点图,我们需要使用go.Scatter,并设置mode='markers'。此外,我们需要在TRACE中提供三个参数,X、Y和mode,用于定义每个数据点的坐标和符号样式。
trace1 = go.Scatter(
x=[1, 2, 3, 4],
y=[10, 11, 12, 13],
mode='markers',
marker=dict(size=10, color='red'),
name='Group 1'
)
trace2 = go.Scatter(
x=[2, 3, 4, 5],
y=[14, 15, 16, 17],
mode='markers',
marker=dict(size=10, color='green'),
name='Group 2'
)
trace3 = go.Scatter(
x=[3, 4, 5, 6],
y=[18, 19, 20, 21],
mode='markers',
marker=dict(size=10, color='blue'),
name='Group 3'
)
# 将三个散点图对象添加到数据列表中
data = [trace1, trace2, trace3]
# 设置布局和标题
layout = go.Layout(title='Categorical Scatterplot')
# 创建figure对象并绘图
fig = go.Figure(data=data, layout=layout)
pyo.plot(fig)
这样就创建了一个分类散点图,其中三个组别(Group 1,Group 2和Group 3)用不同颜色的圆圈表示。
带标签的分类散点图
在一些情况下,分类散点图还可以带有标签。为此,我们可以使用scattertext库将文本标签添加到图形中。基本思路是先创建散点图,然后在同一个图形中添加文本标签。下面是一个示例:
import scattertext as st
corpus = st.CorpusFromPandas(df,
category_col='Category',
text_col='Text',
nlp=nlp).build()
# 使用散点图绘制数据
trace = go.Scatter(x=df['x'], y=df['y'],
mode='markers',
marker=dict(size=12, color='red'))
data = [trace]
# 将文本标签添加到图形中
annotations = []
for i, row in df.iterrows():
annotations.append(dict(x=row['x'],
y=row['y'],
xref='x',
yref='y',
text=row['Category'],
showarrow=True,
arrowhead=7,
ax=0,
ay=-40))
layout['annotations'] = annotations
# 创建figure对象并绘图
fig = go.Figure(data=data, layout=layout)
pyo.plot(fig)
这样就创建了一个带有标签的分类散点图。
结果
本文介绍了如何使用Python-Plotly库来创建基本的散点图,并演示了如何在同一个图像中绘制多个散点图、分类散点图以及添加文本标签。散点图是一种简单、易用且有用的数据可视化方法,可用于探索单个变量或比较多个变量之间的关系。Python-Plotly提供了许多工具和功能来使绘图变得简单,但是我们需要花费一些时间来熟悉库的使用方法。