袖扣:如何设置色标的上限值和下限值?
Cufflinks: how to set upper and lower value for the colorscale?
假设我有一个包含袖扣热图的 DataFrame(如 this one)。
一般情况下,我是这样画的。请注意,我通过名称 'spectral'.
指定了预设色标
heatmap.iplot(kind='heatmap', title='title', colorscale='spectral', xTitle='xTitle', yTitle='yTitle')
它显示了一个热图,但色标的值范围(不是颜色,而是色标映射到的 min/max 值)是自动确定的。
我希望能够指定 min/max 值,以便将最冷的颜色映射到最小值,将最热的颜色映射到最大值。我的用例是我有多个颜色图可以相互比较,我需要它们具有相同的值<->色标映射,以便这些热图之间的值差异从颜色上显而易见。
顺便说一句,我不想手动指定色标内的所有颜色映射,因为这意味着我需要首先了解色标 'spectral' 如何将哪些值映射到哪些颜色。
简短的回答:你不能直接用 cufflinks
来做,因为 zmin
和 zmax
不是关键字参数。
长答案:转换您的 DataFrame 很简单,但获得与 cufflinks
相同的色标有点棘手(当两个名称相同的色标具有不同的映射时不是很有趣吗?)
df.iplot(kind='heatmap')
等同于
plotly.offline.iplot([go.Heatmap(z=df.transpose().values)])
所以现在我们可以通过zmin
和zmax
设置colorscale
的上限和下限
plotly.offline.iplot([go.Heatmap(z=df.transpose().values, zmin=0, zmax=40)])
现在让我们从 cufflinks
中提取色标并将其提供给我们的热图
scale = cf.get_scales()['spectral']
l = len(scale) - 1
spectral = [[i / l, s] for i, s in enumerate(scale)]
plotly.offline.iplot([go.Heatmap(z=df.transpose().values,
zmin=0,
zmax=40,
colorscale=spectral
)])
完整代码
import cufflinks as cf
import plotly
plotly.offline.init_notebook_mode()
import plotly.graph_objs as go
cf.go_offline()
df = cf.datagen.heatmap(20,20)
df.iplot(kind='heatmap', colorscale='spectral')
scale = cf.get_scales()['spectral']
l = len(scale) - 1
spectral = [[i / l, s] for i, s in enumerate(scale)]
plotly.offline.iplot([go.Heatmap(z=df.transpose().values, zmin=0, zmax=40, colorscale=spectral)])
假设我有一个包含袖扣热图的 DataFrame(如 this one)。
一般情况下,我是这样画的。请注意,我通过名称 'spectral'.
指定了预设色标heatmap.iplot(kind='heatmap', title='title', colorscale='spectral', xTitle='xTitle', yTitle='yTitle')
它显示了一个热图,但色标的值范围(不是颜色,而是色标映射到的 min/max 值)是自动确定的。
我希望能够指定 min/max 值,以便将最冷的颜色映射到最小值,将最热的颜色映射到最大值。我的用例是我有多个颜色图可以相互比较,我需要它们具有相同的值<->色标映射,以便这些热图之间的值差异从颜色上显而易见。
顺便说一句,我不想手动指定色标内的所有颜色映射,因为这意味着我需要首先了解色标 'spectral' 如何将哪些值映射到哪些颜色。
简短的回答:你不能直接用 cufflinks
来做,因为 zmin
和 zmax
不是关键字参数。
长答案:转换您的 DataFrame 很简单,但获得与 cufflinks
相同的色标有点棘手(当两个名称相同的色标具有不同的映射时不是很有趣吗?)
df.iplot(kind='heatmap')
等同于
plotly.offline.iplot([go.Heatmap(z=df.transpose().values)])
所以现在我们可以通过zmin
和zmax
colorscale
的上限和下限
plotly.offline.iplot([go.Heatmap(z=df.transpose().values, zmin=0, zmax=40)])
现在让我们从 cufflinks
中提取色标并将其提供给我们的热图
scale = cf.get_scales()['spectral']
l = len(scale) - 1
spectral = [[i / l, s] for i, s in enumerate(scale)]
plotly.offline.iplot([go.Heatmap(z=df.transpose().values,
zmin=0,
zmax=40,
colorscale=spectral
)])
完整代码
import cufflinks as cf
import plotly
plotly.offline.init_notebook_mode()
import plotly.graph_objs as go
cf.go_offline()
df = cf.datagen.heatmap(20,20)
df.iplot(kind='heatmap', colorscale='spectral')
scale = cf.get_scales()['spectral']
l = len(scale) - 1
spectral = [[i / l, s] for i, s in enumerate(scale)]
plotly.offline.iplot([go.Heatmap(z=df.transpose().values, zmin=0, zmax=40, colorscale=spectral)])