plotly是一款开源的python库,用于创建可视化图表,支持多种图标类型,如折线图、柱状图、散点图、饼图等。
plotly提供了plotly.graph_objects
和plotly.express
两种主要的API用于创建图表
- plotly.graph_objects用于创建复杂的自定义图表
- plotly.express适合创建常见图表
- 安装导入
在python环境中安装pip install plotly
在py文件中导入import plotly.express as px
import plotly.graph_objects as go
plotly.express一般简称px
plotly.graph_objects一般简称go
使用Express绘制
使用内置数据举例
# 设置输出窗口显示的最多列数,超出部分用...显示
pd.set_option('display.max_columns',100)
# 设置输出窗口的宽度,每行数据超出部分被换行
pd.set_option('display.width',1000)
data = px.data.gapminder().query("country == 'Afghanistan'")
print(data)
fig = px.bar(data,y='year',x='gdpPercap',text='gdpPercap',orientation='h',color='gdpPercap')
fig.show()
柱状图有四种显示模式:
⚪ stack:堆叠–上下堆叠
⚪ group:分组–并排显示
⚪ overlay:覆盖
⚪ relative(默认):相对
data = px.data.tips()
# print(data)
fig = px.bar(data,x='sex',y='total_bill',color='smoker',barmode='group',facet_col='time',facet_row='day')
fig.show()
使用graph_objects绘制
data = {"name":['xiaoming','lihong','sm3','gon1'],"age":[25,23,22,36]}
fig.add_trace(go.Bar(x=data['name'],y=data['age']))
fig.update_layout(width=600,height=600,title='年龄分布',xaxis=dict(title='姓名'),yaxis={'title':'age'})
fig.show()
# 替换为条形图
fig.add_trace(go.Bar(y=data['name'],x=data['age'],orientation='h'))
# 设置基准位置
fig.add_trace(go.Bar(x=data['name'],y=data['age'],base=np.array(data['age']) * (-1),marker_color='crimson'))
绘制子图
使用make_subplots绘制子图,将画布分为多个区域,每个区域展示自己的图像,各自的坐标轴、标题等都是独立的。
import pandas as pd
import plotly.graph_objects as go
from plotly.subplots import make_subplots
data = {'xiaoming': [20, 33], 'lihong': [22, 17], 'sm3': [44, 20]}
df = pd.DataFrame(data)
math = go.Bar(x=df.keys(),y=df.values[0])
chinese = go.Bar(x=df.keys(),y=df.values[1])
# 创建包含一行两列的子图
fig = make_subplots(rows=1,cols=2,subplot_titles=['数学成绩','语文成绩'])
# 在第一行第一列画图
fig.add_trace(math,1,1)
# 在第一行第二列画图
fig.add_trace(chinese,1,2)
# 整个画布的宽高
fig.update_layout(width=1200,height=600)
fig.show()