python - 如何使用 python 更改热图上的轴?
问题描述
我正在尝试绘制具有不同 A 值的热图。轴显示的迭代次数为 0 到 30,而不是 A 的值应该在 0 到 5 之间。
import numpy as np
from math import e
import matplotlib.pyplot as plt
from ipywidgets import interactive
%matplotlib inline
def ricker(A, x):
return x * e**(A * (1 - x))
import seaborn as sns
A1 = np.linspace(0,5,30)
A2 = np.linspace(0,5,30)
def F(A1,A2):
A1,A2 = np.meshgrid(A1,A2)
Lyap = 0
x = 0.5
for i in range(0,5000):
if i % 2==0:
A = A2
else:
A = A1
Lyap = Lyap + np.log(abs((1-A*x)*e**(A - A*x)))
x = ricker(A, x)
Lyap = Lyap/5000
return Lyap
z = F(A1,A2)
plt.figure(figsize=(16, 16))
ax = sns.heatmap(z)
ax.invert_yaxis()
解决方案
您必须指定 x/y 刻度标签,例如
ax = sns.heatmap(z, xticklabels=A1, yticklabels=A2)
结果很丑
如果你格式化一下,你可以做得更好
xlabels = ['{:3.1f}'.format(x) for x in A1]
ylabels = ['{:3.1f}'.format(y) for y in A2]
ax = sns.heatmap(z, xticklabels=xlabels, yticklabels=ylabels)
但您也可以使用更少的刻度标签
ax = sns.heatmap(z, xticklabels=A1, yticklabels=A2)
ax.set_xticks(ax.get_xticks()[::3])
ax.set_xticklabels(xlabels[::3])
ax.set_yticks(ax.get_yticks()[::3])
ax.set_yticklabels(ylabels[::3])
推荐阅读
- r - 多面冲积图中的变量对齐 ggrepel 文本标签
- server - When and how should DAPI and SAPI be used?
- tsql - 如何通过名称获取元素的值
- arrays - 从字符串数组填充对象的属性
- git - Jenkins 工作区位置
- python - 迭代字典中的对象以使用棉花糖进行序列化和打印
- apache-spark-sql - Spark 结构化流式传输 groupBy 不在附加模式下工作(在更新中工作)
- node.js - Pi 零多个进程上的节点 JS
- arrays - 如何使用 UITextField 输入附加数组?
- multithreading - IConnectionPoint::Advise 在非主线程的 Windows 10“1903”中不再起作用