开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第37天,点击查看活动详情
统计图表
很多统计学图表也预先定义在了Plotly中,主要包括下图所示的箱型图、直方图、热力图、等高线图等。
热力图:
import plotly.express as px
import plotly.figure_factory as ff
stock = px.data.stocks().corr()
corr = stock.apply(lambda x:round(x,2))
index = corr.index.tolist()
columns = corr.columns.tolist()
data1 = []
for i in index:
data2 = []
for j in columns:
data2.append(corr.loc[i,j])
data1.append(data2)
z = data1
# 两个轴,可以任意指定
x = index
y = columns
# 显示的文本内容
z_text = data1
fig = ff.create_annotated_heatmap(
z,
x=x,
y=y,
annotation_text=z_text, # 标注文本内容
colorscale='Viridis',
showscale=True
)
# 字体大小设置
for i in range(len(fig.layout.annotations)):
fig.layout.annotations[i].font.size=12
fig.show()
效果:
AI图表
同时,Plotly也支持绘制一些简单的机器学习图表,不过都是依靠上面的基本图表实现的,如下述的线性回归。
import numpy as np
import plotly.express as px
import plotly.graph_objects as go
from sklearn.linear_model import LinearRegression
df = px.data.tips()
X = df.total_bill.values.reshape(-1, 1)
model = LinearRegression()
model.fit(X, df.tip)
x_range = np.linspace(X.min(), X.max(), 100)
y_range = model.predict(x_range.reshape(-1, 1))
fig = px.scatter(df, x='total_bill', y='tip', opacity=0.65)
fig.add_traces(go.Scatter(x=x_range, y=y_range, name='Regression Fit'))
fig.show()
三维图
import plotly.graph_objects as go
import numpy as np
z1 = np.array([ # numpy数组形式
[8.83,8.89,8.81,8.87,8.9,8.87],
[8.89,8.94,8.85,8.94,8.96,8.92],
[8.84,8.9,8.82,8.92,8.93,8.91],
[8.79,8.85,8.79,8.9,8.94,8.92],
[8.79,8.88,8.81,8.9,8.95,8.92],
[8.8,8.82,8.78,8.91,8.94,8.92],
[8.75,8.78,8.77,8.91,8.95,8.92],
[8.8,8.8,8.77,8.91,8.95,8.94],
[8.74,8.81,8.76,8.93,8.98,8.99]
])
z2 = z1 + 5
z3 = z1 - 5
fig = go.Figure(data=[
go.Surface(z=z1),
go.Surface(z=z2, showscale=False, opacity=0.9),
go.Surface(z=z3, showscale=False, opacity=0.9)
])
fig.show()