我想做一个很好的自由能曲面(热图)使用Seaborn的kdeplut。我非常接近,但无法找到改变颜色条比例的方法。颜色条比例很重要,因为它应该表示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()
这让我:
数组rs和dihes是简单的一维数组。
任何关于如何缩放颜色条(z轴)的建议都将非常有帮助!
3条答案
按热度按时间disho6za1#
一种方法是手动创建图表,然后直接修改标签。这涉及到几行代码。您可能需要稍微调整格式,但这样应该可以让您走上正确的道路。
以下内容改编自this answer和this answer。
vpfxa7rd2#
有点晚了,但我最终把这个上下文管理器放在一起,它把绘制的密度值切换到对数尺度:
这种方法的好处是,它保留了
sns.jointplot()
的所有样式和其他选项,而无需任何额外的工作。fgw7neuy3#
我更新了Walt W's上下文管理器,使其可以与较新版本的seaborn一起使用