如何解决如何绘制由范围为-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)
摘要:
- 要映射颜色,请使用规格化的值
- 要绘制数据,请使用原始值
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。