微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何绘制由范围为-0.1到0.1的数组定义的具有不同边色的散点图

如何解决如何绘制由范围为-0.1到0.1的数组定义的具有不同边色的散点图

def scatterplot(part):
    colors = part['deltf']
    c = plt.cm.coolwarm(colors)
    plt.scatter(part['fnormal'],part['mu']/part['E'],c='w',edgecolors=c,alpha=0.5,cmap='coolwarm',marker="o")

通过运行此代码,边缘颜色在输出图形上只有一种颜色。我发现plt.cm.coolwarm需要正值,但我需要显示负值。

如果有人能帮助我,我将不胜感激。

解决方法

您需要将值归一化为[0,1]才能映射颜色。请参见下面的代码:

import matplotlib as mpl

xx = np.linspace(-0.1,0.1,100)

def normalize(xx):
    vmin = xx.min()
    vmax = xx.max()
    return (xx - vmin)/(vmax-vmin)

cmap = mpl.cm.coolwarm
norm = mpl.colors.Normalize(vmin=-0.1,vmax=0.1)
    
def scatterplot(xx):
    colors = normalize(xx)
    c = plt.cm.coolwarm(colors)
    fig,ax = plt.subplots(1,1,figsize=(7.2,7.2))
    ax.scatter(xx,np.sin(xx),c='w',edgecolors=c,alpha=0.5,cmap='coolwarm',marker="o")
    cbar = plt.colorbar(plt.cm.ScalarMappable(norm=norm,cmap=cmap),ax=ax)
scatterplot(xx)

摘要

  • 要映射颜色,请使用规格化的值
  • 要绘制数据,请使用原始值

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。