gpt4 book ai didi

python-3.x - 使用 Seaborn kdeplot 进行对数缩放

转载 作者:行者123 更新时间:2023-12-02 02:53:22 31 4
gpt4 key购买 nike

我正在尝试使用 Seaborn 的 kdeplot 制作一个漂亮的自由能表面(热图)。
我非常接近,但无法想出改变颜色条比例的方法。颜色条标尺很重要,因为它应该代表 map 上不同坐标处的能量差异。我需要知道如何按 -(0.5961573)*log(x) 缩放颜色条的值,其中 x是颜色条的值。然后我可能还需要从那里标准化颜色条,以便最大值为 0。

这是我目前拥有的:

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import matplotlib.pyplot as plt
import seaborn as sns


rs=[]
dihes=[]
with open(sys.argv[1], 'r') as f:
for line in f:
time,r,dihe = line.split()
rs.append(float(r))
dihes.append(float(dihe))
sns.set_style("white")
sns.kdeplot(rs, dihes, n_levels=25, cbar=True, cmap="Purples_d")
plt.show()

这让我:

sample output

数组 rs 和 dihes 是简单的一维数组。

关于如何缩放颜色条(z 轴)的任何建议都会非常有帮助!

最佳答案

一种方法是手动创建图形,然后直接修改标签。这涉及更多的代码行。您可能需要稍微调整格式,但这样的事情应该会让您走上正轨。

以下内容改编自this answerthis answer .

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
from scipy import stats

rs=[]
dihes=[]
with open(sys.argv[1], 'r') as f:
for line in f:
time,r,dihe = line.split()
rs.append(float(r))
dihes.append(float(dihe))

x = rs
y = dihes
kde = stats.gaussian_kde([x, y])

xx, yy = np.mgrid[min(x):max(x):(max(x)-min(x))/100, min(y):max(y):(max(y)-min(y))/100]
density = kde(np.c_[xx.flat, yy.flat].T).reshape(xx.shape)

sns.set_style("white")
fig, ax = plt.subplots()
cset = ax.contour(xx, yy, density, 25, cmap="Purples_r")
cb = fig.colorbar(cset)
cb.ax.set_yticklabels(map(lambda x: -0.5961573*np.log(float(x.get_text())),
cb.ax.get_yticklabels()))

关于python-3.x - 使用 Seaborn kdeplot 进行对数缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50917216/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com