一、介绍
plotly是一个易于使用,功能强大的python绘图库,用于构建可交互式的图表(可以自行运行后使用鼠标拖拽图片试试),本系列文章将介绍plotly绘制各种类型图的方法,本文将介绍——散点图
plotly库一般会在安装python时自行安装,如果出现找不到库的提示
在命令行中运行
pip install plotly
即可
二、简单散点图的绘制
单变量
这个数据只有一对函数关系,即x和y,以下是简单散点图的绘制方法
- 先导入plotly库
- 再创建一个fig画布
- 最后使用show方法显示
import plotly.express as px
fig = px.scatter(x=[0, 1, 2, 3, 4], y=[0, 1, 4, 9, 16])
fig.show()
多变量
此数据图数据为经典的鸢尾花数据集,有三类数据关系,分别为三种不同种类的鸢尾花的,花萼长宽,花瓣长宽,示例以花瓣的长宽作为y,x
- 先导入plotly库
- 再创建数据集(此处为鸢尾花数据集)
import plotly.express as px
df = px.data.iris() # 此数据的结构为pandas的Dataframe
fig = px.scatter(df, x="sepal_width", y="sepal_length")
fig.show()
三、为数据添加颜色辨识
按species分类
此示例中,不同种类的花的颜色不同
- 本示例的主要不同在于scatter方法的参数:color="species"这一参数代表以species来划分不同的颜色
import plotly.express as px
df = px.data.iris()
fig = px.scatter(df, x="sepal_width", y="sepal_length", color="species",
size='petal_length', hover_data=['petal_width'])
fig.show()
四、按pedal width分类
此示例中,数据的颜色由花瓣的长度决定
- 观察color参数,下图换成了以花瓣长度来划分颜色
import plotly.express as px
df = px.data.iris()
fig = px.scatter(df, x="sepal_width", y="sepal_length", color='petal_length')
fig.show()
五、分面散点图
使用这种方法可以在图上绘制多个指标
- 通过设置facet_col=“sex”, facet_row="time"参数来设置多个指标,用于在图上显示更多信息
import plotly.express as px
df = px.data.tips()
fig = px.scatter(df, x="total_bill", y="tip", color="smoker", facet_col="sex", facet_row="time")
fig.show()
六、设置悬停时的数据标签
- 该示例使用了网上的美国各州人口数据集
- 尝试运行一下,鼠标放在数据点上后会出现标签
import plotly.graph_objects as go
import pandas as pd
data= pd.read_csv("https://raw.githubusercontent.com/plotly/datasets/master/2014_usa_states.csv")
fig = go.Figure(data=go.Scatter(x=data['Postal'],
y=data['Population'],
mode='markers',
marker_color=data['Population'],
text=data['State'])) # hover text goes here
fig.update_layout(title='Population of USA States')
fig.show()
七、散点图的趋势线
plotly也支持绘制散点图的趋势线,方便观察数据的走向
- 主要参数为 trendline=“ols”
import plotly.express as px
df = px.data.tips()
fig = px.scatter(df, x="total_bill", y="tip", trendline="ols")
fig.show()
代码总结
- import plotly.express as px是导入库
- fig = px.scatter(df, x=“total_bill”, y=“tip”)是创建散点图的关键代码,参数一般是数据,各种散点图变化等
- fig.show()是绘制散点图