Python的开源图形库Plotly (一)
plotly
是一个交互式、开源、基于浏览器的 Python
图形库。plotly
图形库可制作交互式、出版质量的图形。
包括制作线图
、散点图
、面积图
、条形图
、误差线
、箱线图
、直方图
、热图
、子图
、多轴图
、极坐标图
和气泡图
等等。
plotly
更是Python
中免费的一个图表开源模块,文档全面,非常方便我们上手,下面我们来看一下它的绘图方式。
plotly安装
plotly
提供用于绘制图表的 Web
服务。
图表保存在您的在线 plotly
帐户中。这是可选的,当然 plotly
可以离线使用。
离线绘图有两种选择:
1、使用 plotly.offline.plot()
创建独立的 HTML
。此文件可以在浏览器中打开。
2、在 Jupyter Notebook
中离线工作时使用 plotly.offline.iplot()
。
我这里使用的是第二种 Jupyter Notebook
离线绘图方式。
打开我们的笔记执行下列命令:
pip install plotly
plotly 与 传统 python 绘图方式 matplotlib 的比较
使用 plotly
库绘制一个简单柱状图:
import plotly.express as px
# 设置x坐标,y坐标
fig = px.bar(x=["a", "b", "c"], y=[1, 3, 2])
fig.show()
我们把鼠标移动上去,可以看到每条柱状都会有坐标提示,这就是我们 plotly
绘图交互式效果(interactive
),这里我们和传统的 matplotlib
绘图效果进行对比:
import matplotlib.pyplot as plt
%matplotlib inline
plt.bar(x= [1,2,3],height = [2, 3, 1])
可以发现,两种类型的可视化用在不同的场景:
1、matplotlib
有科技论文绘图风格,适用于严肃科研场景,静态绘图。
2、plotly
有商业展示绘图风格,动态交互式绘图
客观地说,matplotlib
和 plotly
都有自己的优势,matplotlib
语法简单,学习速度快,适合数据清洗阶段使用。
plotly
展示效果特别好,适合数据可视化阶段用(通常是数据分析结果的呈现,而不是中间过程),但语法稍显复杂。
基础图表
我们绘图之前都离不开建立坐标系,不管对于什么数据集,我们第一是需要做出它的坐标,标注它们坐标系中的特征。
我们这里用随机生成的100个数字作为 x
轴,分别用不同的函数来设置它的 y
轴,比如正弦函数。
散点图:
import plotly.graph_objects as go # 导入plotly.graph_objects
import numpy as np
# 生成数据
t = np.linspace(0, 10, 100) # 生成0到10之间的100个数字
y = np.sin(t) # 求正弦值
# 绘图
data=go.Scatter(x=t,y=y,mode='markers')# 调用Scatter函数,并设置模式为散点图
fig = go.Figure(data) # 将散点图放在图层上
fig.show() # 显示绘图
折线图:
import plotly.graph_objects as go # 导入plotly.graph_objects
import numpy as np
# 生成数据
t = np.linspace(0, 10, 100)
y = np.sin(t) *np.cos(t)**2
data=go.Scatter(x=t,y=y,mode='lines') # 设置模式为折线图
fig = go.Figure(data)
fig.show()
Plotly Express
可以看到我们最开始举例的是用的 express
,而下面用的是 graph_objects
,这个就是 plotly
中一个更加高层的绘图包 Plotly Express
(简称px)。
Plotly Express
是一个非常容易学的,基于 Plotly
的工具包,它封装了 go
的命令,对用户更加友好。
px.scatter
还支持 pandas
的 DataFrame
格式,比如下面:
import plotly.express as px
df = px.data.iris()
df.head()
fig = px.scatter(df, # dataframe 名称,第一个参数
x="sepal_width", # dataframe 中的一个列的名字,用作x
y="sepal_length") # dataframe 中的一个列的名字,用作y
fig.show() # 展示图片
看起来是不是很乱,这只是简单的展示例子,我们还需要调整参数:
fig = px.scatter(df,
x="sepal_width", # x坐标
y="sepal_length", # y坐标
color="species", # 根据物种类型染色
size='petal_length', # 根据petal_length确定大小
hover_data=['petal_width'] #浮动展示还没有用到的petal_width数据,让用户可以一次性看到每条数据的全部维度
)
fig.show()
这样子是不是就看起来清晰很多了。
散点图可以充分展示数据的分布,也是我们做数据分析,绘图第一需要掌握的技术。
如果还想知道关于散点图更多的参数,直接使用 help
就好了。
help(px.scatter)
这样就能看到散点图所有的参数介绍了,当然我们也可以去 plotly
官网查看详细文档。
总结
上面我们只是简单举了几个关于 plotly
散点图的例子,接下来的文章我们将会每种图形进行举例讲解,以及后面的多图展示,图片导出等。
我们慢慢来进入 plotly
的世界。
– 欢迎点赞、关注、转发、收藏【我码玄黄】,各大平台同名。