欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python中利用matplotlib绘图可视化知识归纳

程序员文章站 2022-03-31 22:05:50
python中利用matplotlib绘图可视化知识归纳: (1)matplotlib图标正常显示中文 import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['simhei'] #用于正常显示中文标签 plt.rcParam ......

python中利用matplotlib绘图可视化知识归纳:

(1)matplotlib图标正常显示中文

import matplotlib.pyplot as plt

plt.rcparams['font.sans-serif']=['simhei']   #用于正常显示中文标签

plt.rcparams['axes.unicode_minus']=false     #用于正常显示负号

(2)统计作图函数:

  •  plt.plot()绘制线性二维图,折线图

注意:如果向plot()指令提供了一维的数组或者列表,则matplotlib将默认它是一系列的y值,并且自动为其生成x的值。默认的x向量从0开始并且具有和y同样的长度。

  •   plt.bar() 绘制条形图
  •  plt.scatter() 绘制散点图
  •  plt.hist() 绘制二维条形直方图,显示数据的分配情况
  •  plt.pie() 绘制饼图
  •  plt.boxplot() 绘制箱形图

(3)为项目设置matplotlib参数

 在代码执行过程中,有两种方式可以更改参数:

  1. 使用参数字典(rcparams
  2. 调用matplotlib.rc()命令,通过传入关键字元组,修改参数

如果不想每次使用matplotlib时都在代码部分进行配置,可以修改matplotlib的文件参数。可以用matplot.get_config()命令来找到当前用户的配置文件目录。

配置文件包括以下配置项:

  • figure: 控制dpi、边界颜色、图形大小、和子区( subplot)设置 
  • font: 字体集(font family)、字体大小和样式设置 
  • grid: 设置网格颜色和线性 
  • legend: 设置图例和其中的文本的显示 
  • line: 设置线条(颜色、线型、宽度等)和标记
  • xticks和yticks: 为x,y轴的主刻度和次刻度设置颜色、大小、方向,以及标签大小。
  • axex: 设置坐标轴边界和表面的颜色、坐标刻度值大小和网格的显示 
  • backend: 设置目标暑促tkagg和gtkagg 
  • patch: 是填充2d空间的图形对象,如多边形和圆。控制线宽、颜色和抗锯齿设置等。
  • savefig: 可以对保存的图形进行单独设置。例如,设置渲染的文件的背景为白色。
  • verbose: 设置matplotlib在执行期间信息输出,如silent、helpful、debug和debug-annoying

(4)线条相关属性标记设置

线条形状设置:  linestyle

python中利用matplotlib绘图可视化知识归纳

 marker:对坐标点标记(线条标记)

python中利用matplotlib绘图可视化知识归纳

(5)颜色设置

 调用matplotlib.pyplot.colors()可以得到matplotlib支持的所有颜色。

其中,k表示黑色、m表示洋红色、c表示青色、w表示白色。

背景色:matplotlib.pyplot.axes() 或者 matplotlib.pyplot.subplot()提供一个axisbg参数,可以指定坐标中的颜色。

(6)修改坐标范围

默认情况下,坐标轴的最大值和最小值与输入数据的最小、最大值一致。

plt.axis(xmin,xmax,ymin,ymax) 给定了坐标范围

xlim(xmin,xmax)和ylim(ymin,ymax)来调整x,y的坐标范围

(7)设置轴标记plt.xticks()/plt.yticks():人为设置坐标轴的刻度显示的值

实例:

import matplotlib.pyplot as plt

import numpy as np

plt.figure(figsize=(8,6), dpi=80)                                           # 创建一个新的 1 * 1 的子图,接下来的图样绘制在其中的第 1 块(也是唯一的一块)

plt.subplot(1,1,1)

x = np.linspace(-np.pi, np.pi, 256,endpoint=true)

c,s = np.cos(x), np.sin(x)

plt.plot(x, c, color="blue", linewidth=1.0, linestyle="-")              # 绘制余弦曲线,使用蓝色的、连续的、宽度为 1 (像素)的线条

plt.plot(x, s, color="r", lw=4.0, linestyle="-")                              # 绘制正弦曲线,使用绿色的、连续的、宽度为 1 (像素)的线条

plt.axis([-4,4,-1.2,1.2])                                                                 #给定坐标轴的范围

                                                                                                # 设置轴记号

plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],

[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])

plt.yticks([-1, 0, +1],

[r'$-1$', r'$0$', r'$+1$'])    #注意:这里设置记号时,同时设置了记号的标签。使用了latex

plt.show()   

                                                                                   python中利用matplotlib绘图可视化知识归纳

 

(8)叠加图:用一条指令画出多条不同格式的线

示例:

import matplotlib.pyplot as plt

import numpy as np

t = np.arange(0., 5., 0.2)

plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^')

plt.show()

                                                               python中利用matplotlib绘图可视化知识归纳

(9)创建子图plt.subplot()

首先通过plt.figure()创建一张新的图,之后用plt.subplot()创建子图。

其中subplot()指令包含行数、列数和图像编号,其中图像编号的范围是从1到行数 * 列数。

import matplotlib.pyplot as plt

plt.figure(1)              # 第一张图

plt.subplot(211)           # 第一张图中的第一张子图

plt.plot([1,2,3])

plt.subplot(212)           # 第一张图中的第二张子图

plt.plot([4,5,6])

plt.figure(2)              # 第二张图

plt.plot([4,5,6])          # 默认创建子图subplot(111)

plt.figure(1)             # 切换到figure 1 ; 子图subplot(212)仍旧是当前图

plt.subplot(211)             # 令子图subplot(211)成为figure1的当前图

plt.title('easy as 1,2,3')     # 添加subplot 211 的标题

python中利用matplotlib绘图可视化知识归纳   python中利用matplotlib绘图可视化知识归纳

 (10)plt.text()添加文字说明

text语法说明:

text(x,y,string,fontsize=15,verticalalignment="top",horizontalalignment="right")   

其中:

           x,y:表示坐标值上的值

           string:表示说明文字

          fontsize:表示字体大小

          verticalalignment:垂直对齐方式 ,参数:[ ‘center’ | ‘top’ | ‘bottom’ | ‘baseline’ ]

          horizontalalignment:水平对齐方式 ,参数:[ ‘center’ | ‘right’ | ‘left’ ]

          arrowprops  #箭头参数,参数类型为字典dict    参数:width点箭头的宽度headwidth在点的箭头底座的宽度headlength点箭头的长度shrink 总长度为分数“缩水”从两端facecolor箭头颜色

           bbox给标题增加外框    其中常用参数: boxstyle方框外形facecolor(简写fc)背景颜色edgecolor(简写ec)边框线条颜色edgewidth边框线条大小

示例:

import matplotlib.pyplot as plt

plt.text(0.6, 0.5, "test", size=50, rotation=30.,ha="center", va="center",bbox=dict(boxstyle="round",ec=(1., 0.5, 0.5),fc=(1., 0.8, 0.8),))

plt.text(0.5, 0.4, "test", size=50, rotation=-30.,ha="right", va="top",bbox=dict(boxstyle="square",ec=(1., 0.5, 0.5),fc=(1., 0.8, 0.8),))

plt.draw()

plt.show()

                                                         python中利用matplotlib绘图可视化知识归纳

(12)文本注释annotate()

格式:annotates=’str’,xy=(x,y),xytext=(i1,i2),;...

annotate()参数设置箭头指示的位置,xytext参数设置注释文字的位置

---arrowprops参数以字典的形式设置箭头的样式

---width参数设置箭头长方形部分的宽度,headlength参数设置箭头尖端的长度

---headwidth参数设置箭头尖端底部的宽度,shrink参数设置箭头顶点、尾部与指示点、注释文字的距离(比例值)'''

示例如下:

import numpy as np

import matplotlib.pyplot as plt

plt.figure(figsize=(6, 6))

x = np.random.randint(0, 10, size=10)

x[5] = 30                                                               # x中索引值为5的重新赋值

plt.plot(x)

plt.ylim([-2, 35])

# plt.annotate(s="this point is important", xy=(5, 30), xytext=(6, 31),arrowprops={"width": 2, "headlength": 5, "headwidth": #5, "shrink": 0.1})

plt.annotate(s="this point is important", xy=(5, 30), xytext=(6, 31),arrowprops={"arrowstyle":"->"})     # 如果arrowprops中有arrowstyle,就不应该有其他的属性,xy代表的是箭头的位置,xytext代表的是箭头文本的位置。

plt.show()

                                                                                         python中利用matplotlib绘图可视化知识归纳

(13)plt.title()设置图像标题

title常用参数:fontsize设置字体大小、fontweight设置字体粗细、fontstyle设置字体类型、verticalalignment设置水平对齐方式 可选数:  'center' , 'top' , 'bottom' ,'baseline'

horizontalalignment设置垂直对齐方式,可选参数:left,right,center

rotation(旋转角度)可选参数为:vertical,horizontal 也可以为数字

alpha透明度,参数值0至1之间

backgroundcolor标题背景颜色

(14)matplotlib中的fill_between()函数总结

示例:曲线覆盖

import numpy as np

import matplotlib.pyplot as plt

x = np.array([i for i in range(30)])

y = np.random.rand(30)

plt.plot(x, y)

plt.fill_between(x, 0, y, facecolor='green', alpha=0.3)

plt.show()

注意:fill_between()函数中的几个参数:

                                                               x:第一个参数表示覆盖的区域,直接复制为x,表示整个x都覆盖

                                                              0:表示覆盖的下限

                                                              y: 表示覆盖的上限是y这个曲线

                                                              facecolor:覆盖区域的颜色

                                                              alpha:覆盖区域的透明度[0,1],其值越大,表示越不透明

                                                                                        python中利用matplotlib绘图可视化知识归纳

部分区域覆盖plt.fill_between(x[2:15], 0.2, 0.6, facecolor='green', alpha=0.3)

两曲线之间的覆盖

y1 = np.random.rand(30)

y2 = y1 + 0.3

plt.plot(x, y1,'b',x,y2,'r')

plt.fill_between(x, y1, y2, facecolor='green', alpha=0.3)

                                                                            python中利用matplotlib绘图可视化知识归纳

示例:想要实现循环填充想要填充的部分,设置填充的上下限的功能

import numpy as np

import matplotlib.pyplot as plt

x = np.array([i for i in range(30)])

print(x)

y = np.random.rand(30)

# 设置想要高亮数据的位置

position = [[1, 6],

            [10, 12],

            [20, 23],

            [26, 28]]

print(position)

# 画图

plt.plot(x, y, 'r')

for i in position:

    print(i)                                           #输出结果i为:[1, 6], [10, 12], [20, 23], [26, 28]

    print(x[i[0]:i[1]])                                #结果为:[1 2 3 4 5]     [10 11]    [20 21 22]     [26 27]

    plt.fill_between(x[ i[0] : i[1] ], 0, 1, facecolor='green', alpha=0.3)

plt.show() 

                                                  python中利用matplotlib绘图可视化知识归纳