matplotlib中的色条colormap 及色带colorbar

colormap

关键只有三个语句,

  • 初始化
jet = cm = plt.get_cmap('Reds')
cNorm = colors.Normalize(vmin=0, vmax=5)
scalarMap = cmx.ScalarMappable(norm=cNorm, cmap=jet)

将色条设置范围vmin - vmax, 并设置色条系列,也可以使用Reds,Blues更多参考以下链接及图片
其中 colormap 可参考链接 https://www.matplotlib.org.cn/tutorials/colors/colormaps.html

  • 使用:
colorVal = scalarMap.to_rgba(i)

color bar

参考链接: https://matplotlib.org/2.0.2/examples/api/colorbar_only.html

  • 新建轴域 ax = fig.add_axes([left, bottom, width, height])
  • 明确 cmap, norm
  • 新建colorbar

cb = matplotlib.colorbar.ColorbarBase(ax, cmap=None, norm=None, alpha=None, values=None, boundaries=None, orientation=‘vertical’, ticklocation=‘auto’, extend=‘neither’, spacing=‘uniform’, ticks=None, format=None, drawedges=False, filled=True, extendfrac=None, extendrect=False, label=’’)

%matplotlib notebook
import matplotlib
from matplotlib import pyplot as plt

#%matplotlib tk
from matplotlib import rcdefaults
rcdefaults()
import numpy as np
import pandas as pd
jet = cm = plt.get_cmap('Reds') 
#这里可以选择色条方案
#e.g. Greys, 'Blues'
cNorm = matplotlib.colors.Normalize(vmin=0, vmax=5)
scalarMap = matplotlib.cm.ScalarMappable(norm=cNorm, cmap=jet)
print(scalarMap.get_clim()) 

fig = plt.figure(figsize=(8, 3))
#ax = fig.add_subplot(111)
# 这里为设置并排效果 不采用add_subplot, 而是 add_axes, 其中关于 这二者的区别详见 matplotlib基础教程
ax = fig.add_axes([0.0, 0.0, 0.60, 0.8])
#------绘图---------------------
x = np.arange(10, 15, 1)
y = np.arange(10, 15, 1)

for i in range(5):
    colorVal = scalarMap.to_rgba(i)
    print('value',i,'color value', colorVal)
    ax.plot(x, y + i, c = colorVal )  
    
#----设置color bar----------
ax_bar = fig.add_axes([0.6, 0.0, 0.05, 0.8])
bounds = [0,1,2,3,4,5]
# to use 'extend', you must  specify two extra boundaries: boundaries=[-1] + bounds + [6]
# extend = 'both',
cb1 = matplotlib.colorbar.ColorbarBase(ax_bar, cmap=jet,
                                norm=cNorm,
                                orientation='vertical',
                                boundaries=[-1] + bounds + [6],
                                extend = 'both',
                                ticks = bounds,
                                spacing = 'uniform')
cb1.set_label('Color bar',fontsize = 8)

plt.show()

(0.0, 5.0)
value 0 color value (1.0, 0.9607843137254902, 0.9411764705882353, 1.0)
value 1 color value (0.9913725490196079, 0.7913725490196079, 0.7082352941176471, 1.0)
value 2 color value (0.9874509803921568, 0.5411764705882353, 0.41568627450980394, 1.0)
value 3 color value (0.9466666666666667, 0.26823529411764707, 0.19607843137254902, 1.0)
value 4 color value (0.7364705882352941, 0.08, 0.10117647058823528, 1.0)


C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\pyplot.py:522: RuntimeWarning: More than 20 figures have been opened. Figures created through the pyplot interface (`matplotlib.pyplot.figure`) are retained until explicitly closed and may consume too much memory. (To control this warning, see the rcParam `figure.max_open_warning`).
  max_open_warning, RuntimeWarning)



<IPython.core.display.Javascript object>

在这里插入图片描述

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Matplotlib,可以使用colormap来为图形的颜色标定提供更多的选择。而自定义条纹状colormap是一种特殊的colormap,它可以给图形的颜色添加条纹纹理。 要创建自定义条纹状colormap,需要使用hatch参数。Hatch参数可以设置为一个包含各种条纹纹理的字符串。在Matplotlib,可用的纹理包括斜线('/'、'\')、点('.')、加号('+')、减号('-')等等。可以通过改变这些字符的排列组合来制作出各种不同的条纹纹理。 为了实现自定义条纹状colormap,可以先创建一个包含纹理的字符串列表。然后,使用Colormap的from_list方法来创建自定义的colormap对象。在from_list方法,需要指定colors参数为颜色列表,hatch参数为纹理列表。 以下是一个具体的实例代码: ```python import matplotlib.pyplot as plt import matplotlib.colors as colors # 自定义纹理列表 hatches = ['/', '\\', '|', '-', '+', 'x', 'o', 'O', '.', '*'] # 自定义颜色列表 colors_list = ['#ff0000', '#00ff00', '#0000ff'] # 创建自定义colormap对象 cmap = colors.ListedColormap(colors_list, hatch=hatches) # 创建一个简单的散点图 x = [1, 2, 3] y = [4, 5, 6] plt.scatter(x, y, c=[0, 1, 2], cmap=cmap, s=500) # 显示图形 plt.show() ``` 在上述代码,我们创建了一个包含三种颜色的自定义colormap,并使用scatter函数将三个点绘制在图形。颜色和纹理分别对应每个点的值。绘制的图形,每个颜色的区域都被对应的纹理填充,从而形成条纹纹理的效果。 通过以上方式,就可以实现自定义条纹状colormap。根据实际需求,可以改变颜色和纹理的组合,制作各种不同样式的条纹纹理图形。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值