Plotly python 多面热图
Plotly python facetted heatmaps
我正在使用 中的示例将 seaborn 用于 python 中的多面热图。结果如下所示:
我想用 plotly express 做同样的事情,并尝试使用这个起始代码:
import plotly.express as px
df = px.data.medals_wide(indexed=True)
fig = px.imshow(df)
fig.show()
我的数据也在 pd.DataFrame
中,重要的是我要显示热图分组依据的组以及地图的 x/y-axis。
如何扩展 px.imshow
示例以像上面的 seaborn 示例一样按组创建多面热图?
示例数据取自回答问题的参考回复。 express,as data,如果是列数据可以分图,但是结果不能像样本数据那样,用一个分类变量作为抽取条件,用不同的分类变量。如果它是一个子图,您可以使用图形对象绘制它。可以通过在按类别变量提取数据的结果的数据框中指定xy-axis来创建热图。
import numpy as np
import pandas as pd
import plotly.express
# Generate a set of sample data
np.random.seed(0)
indices = pd.MultiIndex.from_product((range(5), range(5), range(5)), names=('label0', 'label1', 'label2'))
data = pd.DataFrame(np.random.uniform(0, 100, size=len(indices)), index=indices, columns=('value',)).reset_index()
import plotly.graph_objects as go
from plotly.subplots import make_subplots
titles = ['label0='+ str(x) for x in range(5)]
fig = make_subplots(rows=1, cols=len(data['label0'].unique()),
shared_yaxes=True,
subplot_titles = tuple(titles))
for i in data['label0'].unique():
df = data[data['label0'] == i]
fig.add_trace(go.Heatmap(z=df.value, x=df.label1, y=df.label2), row=1, col=i+1)
fig.update_traces(showscale=False)
fig.update_xaxes(dtick=[0,1,2,3,4])
fig.update_xaxes(title_text='label1', row=1, col=i+1)
fig.update_yaxes(title_text='label2', row=1, col=1)
fig.show()
我正在使用
我想用 plotly express 做同样的事情,并尝试使用这个起始代码:
import plotly.express as px
df = px.data.medals_wide(indexed=True)
fig = px.imshow(df)
fig.show()
我的数据也在 pd.DataFrame
中,重要的是我要显示热图分组依据的组以及地图的 x/y-axis。
如何扩展 px.imshow
示例以像上面的 seaborn 示例一样按组创建多面热图?
示例数据取自回答问题的参考回复。 express,as data,如果是列数据可以分图,但是结果不能像样本数据那样,用一个分类变量作为抽取条件,用不同的分类变量。如果它是一个子图,您可以使用图形对象绘制它。可以通过在按类别变量提取数据的结果的数据框中指定xy-axis来创建热图。
import numpy as np
import pandas as pd
import plotly.express
# Generate a set of sample data
np.random.seed(0)
indices = pd.MultiIndex.from_product((range(5), range(5), range(5)), names=('label0', 'label1', 'label2'))
data = pd.DataFrame(np.random.uniform(0, 100, size=len(indices)), index=indices, columns=('value',)).reset_index()
import plotly.graph_objects as go
from plotly.subplots import make_subplots
titles = ['label0='+ str(x) for x in range(5)]
fig = make_subplots(rows=1, cols=len(data['label0'].unique()),
shared_yaxes=True,
subplot_titles = tuple(titles))
for i in data['label0'].unique():
df = data[data['label0'] == i]
fig.add_trace(go.Heatmap(z=df.value, x=df.label1, y=df.label2), row=1, col=i+1)
fig.update_traces(showscale=False)
fig.update_xaxes(dtick=[0,1,2,3,4])
fig.update_xaxes(title_text='label1', row=1, col=i+1)
fig.update_yaxes(title_text='label2', row=1, col=1)
fig.show()