原木规模与海运kdedit [英] Log scales with Seaborn kdeplot

查看:19
本文介绍了原木规模与海运kdedit的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用Seborn的kdedit来制作一个很好的自由能曲面(热图)。 我已经很接近了,但想不出改变色条比例的方法。颜色条标度很重要,因为它应该代表地图上不同坐标下的能量差异。我需要知道如何按-(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()

这让我很困惑:

数组RS和DIID是简单的一维数组。

任何有关如何缩放颜色栏(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()))

这篇关于原木规模与海运kdedit的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆