如何使用Python更改热力图上的坐标轴?

2024-06-16 13:56:42 发布

您现在位置: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()

Tags: fromimporta2returnmatplotlibdefa1as
1条回答
网友
1楼 · 发布于 2024-06-16 13:56:42

你必须指定x/y记号标签,例如

ax = sns.heatmap(z, xticklabels=A1, yticklabels=A2)

结果很难看

rawticklabels

你可以做得更好,如果你有一点格式

^{pr2}$

betterstrings

但你也可以少用记号标签

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])

somelabels

相关问题 更多 >