第三十九篇 matplotlib模块

matplotlib模块

绘图库,可以创建常用的统计图(条形图、箱型图、折线图、散点图和直方图)

bar() 条形图

# 由于该模块不识别中文,所以我们需要导入一个中文简体字文件
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
font = FontProperties(fname='B:\\msyh.ttc')   # 在文件B中找字体文件

# 修改背景为条纹
plt.style.use('ggplot')

classes = ['1班','2班','3班','4班']    # 班级
classes_index = range(len(classes))   # 班级索引
# print(type(classes_index))   <class 'range'>
# print(list(classes_index))    [0, 1, 2, 3]
student_amounts = [43, 55, 60, 36]   # 各班人数

# figure中的参数figsize 控制画布大小
# 生成画布
fig = plt.figure()    # fig:打扮  figure:图形,画像

# 设置画布
# 1,1,1表示一张画布切割成1行1列共一张图的第1个;
# 2,2,1表示一张画布切割成2行2列共4张图的第一个(左上角)
axl = fig.add_subplot(1,1,1)    # subplot:陪衬   axl:光束轴

# 生成柱状图,bar:条、棒
axl.bar(classes_index,student_amounts,align='center',color='blue')

# 在底部生成x轴
axl.xaxis.set_ticks_position('bottom')   #bottom:底部  xaxis:横轴

# 在左边生成y轴
axl.yaxis.set_ticks_position('left')     # left:左边 yaxis:纵轴

# 将班级文字放在班级索引上
# xticks:设置柱的文字说明  #ticks:十字叉
plt.xticks(classes_index,classes,rotation=0,fontsize=13,fontproperties=font)

# x轴上放班级
plt.xlabel('班级',FontProperties=font,fontsize=15)

# y轴上放学生人数
plt.ylabel('学生人数',FontProperties=font,fontsize=15)

# 画布标题
plt.title('班级-学生人数',FontProperties=font,fontsize=15)

# 展示图形
plt.show()

hist() 直方图

import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
font = FontProperties(fname='B:\\msyh.ttc')
import numpy as np

plt.style.use('ggplot')

# 自定义两个值
mu1,mu2 = 50,100

# 用于改造随机数,让它符合正态分布的需要
sigma = 10

# 构造均值为50的符合正态分布的数据
x1 = mu1 + sigma*np.random.randn(10000)
x2 = mu2 + sigma*np.random.randn(10000)

# 生成画布
fig = plt.figure()

# 设置画布
# 将画布分成一行两列,取第一部分画图(也就是在左边画)
axl1 = fig.add_subplot(121)

#bins=50表示每个变量的值分成50份,即会有50根柱子
axl1.hist(x1, bins=50, color='darkgreen')   # 深绿

# 将画布分成一行两列,取第二部分画图(也就是在右边画)
axl2 = fig.add_subplot(122)
axl2.hist(x2, bins=50, color='orange')    # 橙色

# 大标题
fig.suptitle('两个正态分布', fontproperties=font, fontweight='bold', fontsize=15)

# 第一个图的标题
axl1.set_title('绿色的正态分布', fontproperties=font)

# 第二个图的标题
axl2.set_title('橙色的正态分布', fontproperties=font)
# 展示
plt.show()

plot() 折线图

import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
font = FontProperties(fname='B:\\msyh.ttc')
plt.style.use('ggplot')
import numpy as np
from numpy.random import randn

# 随机数种子,固定一个变量的随机数永远不变,只能对同一个变量起作用
np.random.seed(1)

# 使用numpy的累加和,保证数据取值范围不会在(0,1)内波动
# 定义足够的一维数组,每个数组都用于生成一条折线图
plot_data1 = randn(40).cumsum()
plot_data2 = randn(40).cumsum()
plot_data3 = randn(40).cumsum()
plot_data4 = randn(40).cumsum()

# 通过数据绘制折线图
plt.plot(plot_data1, marker='o', color='red', linestyle='-', label='红实线')
plt.plot(plot_data2, marker='x', color='orange', linestyle='--', label='橙虚线')
plt.plot(plot_data3, marker='*', color='yellow', linestyle='-.', label='黄点线')
plt.plot(plot_data4, marker='s', color='green', linestyle=':', label='绿点图')
# label :标签,就是标注

# loc = 'best'表示给label(标签)自动选择最好的位置
plt.legend(loc='best',prop=font)

plt.show()

scatter() 散点图+直线图

import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
font = FontProperties(fname='B:\\msyh.ttc')

# 设置画布背景为网格
plt.style.use('ggplot')
import numpy as np
from numpy.random import randn

# 创建一个一维数组
x = np.arange(1,20,1)

# 拟合一条水平散点线
# 合并两个一维数组,得到一个新的数组,用于绘图
np.random.seed(1)   # 随机数种子
y_linear = x+10*np.random.randn(19)   # 随机数组

# 拟合一条x2的散点线
# 第二个用于散点绘图和直线绘图的数组
y_quad = x**2+10*np.random.randn(19)

# 生成画布
fig = plt.figure()

# 设置画布
# 将画布分成一行两列,在第一个部分作图
ax1 = fig.add_subplot(121)

# 生成散点图,x为横坐标数据,y_linear和y_quad为纵坐标数据
plt.scatter(x, y_linear, s=30, color='r', label='蓝点')
plt.scatter(x, y_quad, s=100, color='b', label='红点')

# 第二部分画直线图
ax2 = fig.add_subplot(122)

# 生成直线图(折线图),x为横坐标数据,y_linear和y_quad为纵坐标数据
plt.plot(x, y_linear, color='r')
plt.plot(x, y_quad, color='b')

# 限制x轴和y轴的范围取值
plt.xlim(min(x)-1, max(x)+1)
plt.ylim(min(y_quad)-10, max(y_quad)+10)

# 画布大标题
fig.suptitle('散点图+直线图', fontproperties=font, fontsize=20)

# 左画布标题
ax1.set_title('散点图', fontproperties=font)

# 左画布图例,指label(标题),去掉的话将不显示
ax1.legend(prop=font)

# 右画布标题
ax2.set_title('直线图', fontproperties=font)

# 展示
plt.show()

原文地址:https://www.cnblogs.com/itboy-newking/p/11041720.html

时间: 2024-11-06 07:25:12

第三十九篇 matplotlib模块的相关文章

第三十六篇 hashlib模块、hmac模块和logging模块

目录 第三十七篇 hashlib模块.hmac模块和logging模块 一.hashlib模块 1.hash是什么 2.撞库破解hash算法加密 二.hmac模块 三.logging模块 1.日志的五个级别 2.V3 3.日志配置文件 4.总结 第三十七篇 hashlib模块.hmac模块和logging模块 一.hashlib模块 1.hash是什么 1.hashlib模块一般用于明文加密 2.hash是一种算法,在hashlib模块中主要提供了md5 等算法,传入的内容通过这些算法,会得到一

第三十九篇 Python异常处理

一. 什么是异常 异常就是程序运行时发生的错误,在程序出现错误时,则会产生一个异常,若程序没有处理它,则会抛出该异常,程序的运行也随之终止,在python中,错误触发的异常如下 错误分成两种: #语法错误示范一 if #语法错误示范二 def test: pass #语法错误示范三 class Foo pass #语法错误示范四 print(haha 1.语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) #TypeError:int类型不可迭代 for i i

第三十五篇 os模块、sys模块、json模块、pickle模块

目录 一.os模块 二.sys模块 三.json模块 dump和load 四.pickle模块 一.os模块 os模块和操作系统交互,主要用于文件操作 import os # test.py文件中 # os.mkdir() 一个路径参数和一个字符串参数.如果有路径参数,则在该路径下创建一个新的文件夹:如果无路径参数,则在当前文件的同级路径下创建一个新的文件夹 os.mkdir('king') # 创建了和test.py文件同级目录下的名为king的文件夹 # os.removedirs() 一个

mysql 第三十九篇文章~canal的深度解读1

一 简介:经过一段时间的研究,对canal有了一些见解 二 配置文件: 1 canal.properties (系统根配置文件)     主要参数列表   canal.properties (系统根配置文件)   canal.destinations= example 当前server上部署的instance列表 默认为example 在canal.properties定义了canal.destinations后,需要在canal.conf.dir对应的目录下建立同名的文件 canal.auto

第三十八篇 pandas模块

pandas 基于numpy模块,用于处理文本或表格数据,支持文件存取操作,支持数据库 import pandas as pd import numpy as np Series 只能放一维数组 print(pd.Series([1,2,3,4,5])) ''' 0 1 1 2 2 3 3 4 4 5 dtype: int32 ''' print(pd.Series(np.array([1,2,3,4,5]))) ''' 0 1 1 2 2 3 3 4 4 5 dtype: int32 '''

Python之路(第三十九篇)管道、进程间数据共享Manager

一.管道 概念 管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信. 先画一幅图帮助大家理解下管道的基本原理 现有2个进程A和B,他们都在内存中开辟了空间,那么我们在内存中再开辟一个空间C,作用是连接这两个进程的.对于进程来说内存空间是可以共享的(任何一个进程都可以使用内存,内存当中的空间是用地址来标记的,我们通过查找某一个地址就能找到这个内存)A进程可以不断的向C空间输送东西,B进程可以不断的从C空间读取东西,这

C++第三十九篇 -- 研究一下Windows驱动开发(二)-- 驱动程序中重要的数据结构

数据结构是计算机程序的核心,I/O管理器定义了一些数据结构,这些数据结构是编写驱动程序时所必须掌握的.驱动程序经常要创建和维护这些数据结构的实例. 一.驱动对象(DRIVER_OBJECT) 每个驱动程序会有唯一的驱动对象与之对应,并且这个驱动对象是在驱动加载的时候,被内核中的对象管理程序所创建的. 驱动对象用DRIVER_OBJECT数据结构表示,它作为驱动的一个实例被内核加载,并且内核对一个驱动只加载一个实例.确切地说,是由内核中的I/O管理器负责加载的.驱动程序需要在DriverEntry

Python进阶(三十九)-数据可视化の使用matplotlib进行绘图分析数据

Python进阶(三十九)-数据可视化の使用matplotlib进行绘图分析数据 ??matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中. ??它的文档相当完备,并且 Gallery页面 中有上百幅缩略图,打开之后都有源程序.因此如果你需要绘制某种类型的图,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定. ??在Linux下比较著名的数据图工具还有gnuplot

【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验十九:SDRAM模块② — 多字读写

实验十九:SDRAM模块② — 多字读写 表示19.1 Mode Register的内容. Mode Register A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 0 0 OP Code 0 0 CAS Latency BT Burst Length A3 Burst Type 0 Sequential 1 Interleave   Burst Length A2 A1 A0 A3 = 0 A3 = 1 0 0 0 1 1 0 0 1 2 2 0 1 0