Python matplotlib 颜色的应用

这是我参与11月更文挑战的第26天,活动详情查看:2021最后一次更文挑战

前言

matplotlib 模块功能非常强大,pyplot类为用户提供快速绘制折线、柱状、散点等常见图表的脚本方法。与此同时,matplotlib 依赖众多的底层渲染器如Agg对图像数据处理展示。

为了能够绘制更加美观的图像,我们都会使用到matplotlib 中颜色应用到图像中。

在前面的学习中,图表中颜色应用主要两种方式:

  • 设置颜色填充属性关键字:如plot、bar、hist、pi、contour等都提供facecolor/color/cmap属性关键字
  • 渲染numpy数据:使用imshow()/pcolor方法展示numpy数据渲染成图像

color.png

本期,我们将对matplotlib 模块中绘制颜色表、图表颜色应用相关方法属性进行学习,let's go~

1. imshow()绘制彩色表

  • imshow()方法概述

    pyplot.imshow()是将numpy生成的数据渲染成2D图像

    • imshow()将RGBA数据或者2D标量数据渲染成谓彩色图像
    • imshow()可以通过cmap|vmin|vmax指定输出的颜色级别
  • imshow()方法绘制彩色表

    • 导入matplotlib.pyplot库
    • 调用numpy.random.randint()生成向量数据
    • 调用pyplot.imshow()把数据渲染成图像
    • 调用pylot.show()展示出图像
    x = np.random.randint(1,100,size=(3,5))
    plt.imshow(x)
    plt.show()
    复制代码

    image.png

  • 可以通过cmap、vmin、vmax更改渲染颜色级别

     plt.imshow(x,cmap="hot",vmin=10,vmax=210)
    复制代码

    image.png

  • 可以调用text()方法填充每个颜色文本

    fig,ax = plt.subplots()
    
    x = np.random.randint(1,100,size=(7,7))
    
    ax.imshow(x,cmap="magma_r")
    
    for i in range(7):
        for j in range(7):
            text = ax.text(j,i,x[i,j],ha="center",va="center",color="w")
    
    plt.show()
    复制代码

    image.png

2. pcolormesh()绘制彩色表

  • pcolor()方法概述

    • pcolor()方法使用四边形创建非常规的彩色网格
    • pcolor()方法对于大型矩阵,渲染的速度会很慢
    • pcolor()方法仅支持对x,y的掩码进行处理
  • pcolormesh()方法概述

    • pcolormesh()方法使用四方形创建彩色网格
    • pcolormesh()方法适用于大型的矩阵数据
    • pcolormesh()方法将遮罩元素的facecolor设置为透明,可以使用边缘颜色看到差异
  • pcolor()方法实操

    x = np.random.rand(6,10)
    
    plt.pcolor(x)
    
    plt.colorbar()
    
    plt.show()
    复制代码

    image.png

  • pcolormesh()方法实操

    x = np.random.rand(6,10)
    
    plt.pcolormesh(x,edgecolors="k")
    
    plt.colorbar()
    
    plt.show()
    复制代码

    image.png

3. hline()、vline()绘制彩色线条

  • hline()、vline()方法概述

    • pyplot.hline(y,xmin,xmax)方法绘制水平线
    • pyplot.vline(x,ymin,ymax)方法绘制垂直线
  • hline()、vline()方法实操

    • 调用pyplot.rcParams['axes.prop_cycle'].by_key()['color']获取Axes对象的颜色
    • 调用pyplot.vline()、pyplot.hline()方法绘制垂直水平线
    prop_cycle = plt.rcParams['axes.prop_cycle']
    colors = prop_cycle.by_key()['color']
    
    for i,color in enumerate(colors):
    
        plt.vlines(i,0,10,color=color)
        plt.hlines(i,0,10,color=color)
    
    plt.show()
    复制代码

    image.png

4. colorbar 绘制颜色条

  • colorbar()方法概述

    • pylot.colorbar将颜色条添加到图表中
    • colorbar可应用在scatter、contour、imshow、pcolormesh中
    • colorbar 在图表中默认是垂直显示,可以通过orientation设置水平
  • colorbar()方法实操

    data = np.arange(100).reshape(10,10)
    
    im = plt.imshow(data)
    
    plt.colorbar(im,orientation="horizontal")
    
    plt.show()
    复制代码

    image.png

5. 图表颜色属性

  • 颜色属性关键字

    • cmap:RGBA颜色映射表,形式为"颜色映射表名_r"
    • color: RGBA颜色元组或者列表
    • facecolor:图形颜色
    • edgecolor:图形边框颜色
    • 颜色取值形式:
      • 表示颜色的英文单词:如红色"red"
      • 表示颜色单词的简称如:红色"r",黄色"y"
      • RGB格式:十六进制格式如"#88c999";(r,g,b)元组形式
      • 可以转入颜色列表
  • 常见图表颜色属性一览表

    方法 图表名 cmap color facecolor edgecolor
    pyplot.hist() 直方图 × ×
    pyplot.plot() 折线图 × × ×
    pyplot.bar() 柱状图 ×
    pyplot.pie() 饼图 × √(colors) ×
    pyplot.scatter() 散点图 √ (c) × √(edgecolors)
    pyplot.contour() 等高线图 √(colors) × ×
    pyplot.boxplot() 箱型图 × × × ×
    pyplot.violinplot() 提琴图 × × × ×
    pyplot.imshow() 展示dta为图像 × × ×
    pyplot.pcolor() 颜色网格 √(edgecolors)

总结

本期,我们对matplotlib 模块中进行绘制图表时,颜色的应用相关方法和属性进行总结。如何将数据清晰的展示出来,图表中往往要借助颜色来帮助我们区分。

以上是本期内容,欢迎大佬们点赞评论,下期见~

猜你喜欢

转载自juejin.im/post/7035128531201818655
今日推荐