matplotlib学习笔记

一.准备工作:

0.通过pip模组在命令行中下载

matplotlib,pandas,scipy等组件库

1.针对matplotlib库无法显示中文的问题

引用如下代码:

#-*- coding: utf-8 -*-
#python3默认utf-8解码
from pylab import
mpl.rcParams['font.sans-serif'] = ['SimHei']  #黑体
mpl.rcParams['axes.unicode_minus'] = False    #针对负号显示异常的问题

2.一些基本函数

1>.plot()

plt.plot(x, y, format_string, **kwargs)

    #架构函数

    #x(y):分别为x轴和y轴数据,可为元组或列表

    #format_string&&**kwargs:前者为控制曲线格式的字符串,后者代表其他的格式,

 eg:颜色,实、虚线,线宽、风格等

2.>.x(y)label

plt.x(y)label(x(y),fontproperties,fontsize,fontcolor)

    #对x、y轴添加文本标签,同时对字体进行设置

eg:plt.xlabel(amount, fontproperties = ‘SimHei’, fontsize = 15, color = ‘green’)

3.>.title

plt.title()

    #对图形整体添加文本标签

4.>.annotate

plt. annotate(s, xy = arrow_crd, xytext = text_crd, arrowprops = dyi

    #在图形中添加带箭头的注释

    #s表示要注解的字符串是什么,xy对应箭头所在的位置,xytext对应文本所在位置,arrowprops定义显示的属性

5.>.grid

plt.grid(b, which, axis, color, linestyle, linewidth, **kwargs)

    #b是布尔值,表示是否显示网格线

    #axis取值为‘both’,‘x',’y'

    #color为网格线颜色,linestyle为网格线风格,linewidth为网格线宽度

6.>.x(y)tick

以xticks为例

plt.xticks(locs, [labels], **kwargs)

    # locs参数为数组参数(array_like, optional),表示x-axis的刻度线显示标注的地方

7.>.figure

plt.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)

    #num:图像编号或名称,数字为编号 ,字符串为名称

    #figsize:指定figure的宽和高,单位为英寸

    #dpi参数指定绘图对象的分辨率

eg:fig=plt.figure(figsize=(4,3),facecolor='blue')

8.>.legend

plt.legend(handles,label,loc)

    #handles需要传入你所画线条的实例

    #label是图例的名称

    #loc代表了图例在整个坐标轴平面中的位置(一般选取'best'这个参数值)

二、图形绘制

0.折线图

  • 以某市温度变化为例

#主要代码:

import matplotlib.pyplot as plt
plt.figure(figsize=(20, 10), dpi=80)
day=['7.1','7.2','7.3','7.4','7.5','7.6','7.7']
ndegrees=[20,17,18,20,16,18,20]
mdegrees=[35,32,31,30,27,32,30]
line1,=plt.plot(day, mdegrees, c='red')
plt.scatter(day, mdegrees, c='red')
line2,=plt.plot(day, ndegrees, c='blue')
plt.scatter(day, ndegrees, c='blue')
plt.yticks=(range(10, 40, 4))
#利用range函数确定刻度分度值
plt.grid(True, linestyle='--', alpha=0.5)
plt.xlabel("日期", fontdict={'size': 16})
plt.ylabel("温度", fontdict={'size': 16})
#添加文本标签
plt.title("2021年7月份第一周某市气温变化", fontdict={'size': 20})
plt.legend(handles=[line1,line2],labels=['最高温度','最低温度'],loc='best')
#自定义图例
plt.show()

!注:

0.plt.scatter(x, y)函数 可以绘制散点图,在折线图中使用可以更清晰的看到每个点的情况,方便比较

1.plt.lengend函数中loc参数表:

0: ‘best'      1: ‘upper right'     2: ‘upper left'     3: ‘lower left'     4: ‘lower right'     5: ‘right'                  6: ‘center left'     7: ‘center right'     8: ‘lower center'     9: ‘upper center'     10: ‘center'
 

#样例测试结果:

 1.直方图

 #实现函数:

hist( x, bins=None, range=None, normed=False, # 重要

orientation='vertical', color=None, edgecolor=None, label=None, # 常用    

density=False, weights=None, cumulative=False, bottom=None, histtype='bar',

align='mid', rwidth=None, # 选用

1.>x:元组,用来存放数据

2.>bins:整数,序列或者字符串,整数表示条形个数,序列表示区间范围

3.>range:元组,指定最大最小值

4.>density:布尔值,如果为True,则返回归一化概率密度

5.>rwidth:设置条形图的宽度

6.>color:直方图填充色

7.>label:设置直方图标签

8.>orientation:设置直方图方向

  • 以生成一个随机的连续数据为例

#主要代码:

import numpy as np
#引入numpy库进行数学处理
import matplotlib.pyplot as plt
x = np.random.randint(1,500,2000)
#产生2000个1~500的随机数
bins=[0,50,100,150,200,250,300,350,400,450,500]
plt.hist(x,color='r',rwidth=0.6)
#hist()函数自定义构造直方图
plt.xticks(bins)
#自定义横轴
plt.xlabel('区间')
plt.ylabel('频数')
plt.title('频数直方图')
plt.show()

#样例测试结果:

 2.饼图

#实现函数:

pie(x, explode=None, labels=None, colors=None, autopct=None,

pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None,

radius=None, counterclock=True, wedgeprops=None, textprops=None,

center=(0, 0), frame=False, rotatelabels=False, hold=None, data=None)
   

1.>x:每块占图形的比例

2.>labels:每块饼图的外显文字注释

3.>explode:每块离开中心位置的距离

4.>startangle:绘制起始角度,默认为x轴正方向,逆时针绘图

5.>shadow:在饼图下方添加阴影

6.>labeldistance:label相对于饼图的位置,默认值为1.1

7.>radius:饼图半径,默认为1

8.>autopct:控制饼图百分比设置,可用format函数

9.>pctdistance:autopct相对于饼图的位置,默认为0.64

  • 以某大学大一学生生活费品均值为例

#主要代码:

import matplotlib.pyplot as plt
costs=[0.1,0.2,0.36,0.23,0.04,0.07]
Range=['低于500','500~1000','1000~1500','1500~2000','2000~2500','高于2500']
Explode=[0,0,0.1,0,0,0]
#突出显示生活费位于1000-1500的学生占比
plt.pie(x=costs,explode=Explode,labels=Range,
        autopct='%.1f%%',#设置百分数格式
        shadow=True,#添加阴影
        radius=1.4)
plt.axis('equal')
#饼图形状为一个正圆       
plt.title('大一学生每月生活费情况统计')
plt.legend(title='支出分布')
#设置图例
plt.show()

#样例测试结果:

3.箱型图

 #什么是箱型图:

#实现函数:

boxplot(x, norch=None, showfliers=None, patch_artist=None, labels)

1.>x: 绘制所需数据

2.>norch: 是否用凹口形式展现箱型图

3.>showfliers: 是否显示异常值

4.>patch_artist: 是否填充箱体的颜色

5.>labels: 添加标签

  • 实例

#主要代码:

import numpy
import matplotlib.pyplot as plt
y1 = np.random.randn(100)
y2= np.random.random(100)
y3 = np.random.randint(1,5,100)
#random函数生成随机数
plt.boxplot((y1,y2,y3),labels=['a','b','c'])
plt.title('箱型图')
plt.show()

#样例测试结果:

 4.雷达图

#构造方法:

1.>作一个极坐标系并添加数据点

plt.polar(theta, r, **kwargs)

    #theta:极角, r: 极径

    #用列表存放数据

plt.ylim()

   #设置极轴上下限

eg: plt.polar(0.25*np.pi,20,'ro',lw=2)

    #r表示红色,o是圆点  lw宽度为2

2.>连线并使其封闭

#将polar函数中’ro‘改为’ro-‘

#concatenate()函数使其封闭

3.>填色

fill(*args, data=None, **kwargs)

    #*args:确定填色区域

    #data: 数据对象,可添加标签

  • 实例

#测试样例结果:

 三、问题补充

#添加标注

1.>无指向性标注

plt.text(x, y, s, fontdict = None, **kwargs)
    #x, y 为标注文本在绘图区域中的位置;
    #s为标注文本的内容;
    #fontdict 为文本属性的字典,默认为文本属性

2.>指向性标注

plt.annotate(s, xy, *args, **kwargs)
    #s 为标注文本的内容;
    #xy 为标注箭头的开始坐标 (x, y);
    #*args 为 xytext = (x, y) 标注文本的坐标;
  • 以两地气温变化趋势为例

#测试样例结果

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值