Python学习|科学计算基础之Matplotlib

实验目的

  1. 1.学习绘图库Matplotlib的使用。
  2. 2.掌握绘图库常见的图形类型,常用的线型、颜色、标记符号。
  3. 3.掌握多子图绘制的方法

实验内容

启动Spyder,在Spyder环境下编写完整程序完成下列练习。

实验1

利用[2, 3, 5, 10, 8]列表数据绘制折线图、柱形图、饼图。

import matplotlib.pyplot as plt 				# 导入plt
plt.rcParams['font.sans-serif'] = ['SimHei']  	# 指定中文黑体字体
plt.rcParams['axes.unicode_minus'] = False  	# 确保-负号显示正常
x = [2, 3, 5, 10, 8]
labels = list('abcde')
plt.plot(x, 'b-') 							# 折线图
plt.figure()								# 新建图形
plt.bar(labels, x) 						# 柱形图
plt.figure()								# 新建图形
explode = [0, 0, 0.1, 0.2, 0]
plt.pie(x, explode=explode, labels=labels, autopct='%1.1f') 	# 饼图
plt.show()         						# 显示图形

实验2

生成1000个N(1, 10)正态分布的随机小数,绘制箱线图。

注:N(1,10) 则 scale= 10**(1/2)

x=np.random.normal(1, 10**(1/2),1000)
plt.boxplot(x)
print('方差:', x.var())  				# 方差应近似10

实验3

绘制如图所示的多子图。

x = np.arange(1,100)
Plt.subplot(2,2,1)
plt.plot(x, x)            # 2行x2列图形的第一个子图
Plt.subplot(2,2,2)   	# 2行x2列图形的第二个子图
plt.plot(x, -x)
Plt.subplot(2, 2, 3)  	# 2行x2列图形的第三个子图
plt.plot(x, x**2)
Plt.subplot(2, 2, 4)  	# 2行x2列图形的第四个子图
Plt.plot(x, np.log(x))		

实验4

利用matplotlib库中的pyplot模块,绘制x在[-10,10]取值区间上的函数

一阶导数和二阶导数的图形,要求:

(1)绘制三个子图,分别放置上述三个图形

(2)第一个子图区域,标题为Polynomial,使用红色实线绘制

(3)第二个子图区域,标题为First Derivative,使用蓝色虚线绘制

(4)第三个子图区域,标题为Second Derivative,使用绿色实心圆点绘制

import matplotlib.pyplot as plt
import matplotlib
import numpy as np
matplotlib.rcParams['font.family']='SimHei'
matplotlib.rcParams['axes.unicode_minus']=False

plt.suptitle("f(x)函数、一阶导数、二阶导数折线图")
plt.subplot(3,1,1)
plt.title("Polynomial")
plt.xlim(-10,10)
plt.xticks([-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,10])#设置x轴刻度
x=np.arange(-10,10)
y1=x*x*x+2*x*x+3*x+4
plt.plot(x,y1,"g-")


plt.subplot(3,1,2)
plt.title("First Derivativ")
plt.xlim(-10,10)
plt.xticks([-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,10])#设置x轴刻度
x=np.arange(-10,10)
y2=3*x*x+4*x+3
plt.plot(x,y2,"b:")


plt.subplot(3,1,3)
plt.title("Second Derivative")
plt.xlim(-10,10)
plt.xticks([-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,10])#设置x轴刻度
x=np.arange(-10,10)
y2=4*x+4
plt.plot(x,y2,"g.")
plt.show()

运行效果图:

实验5

教材213页【例9-3】

import matplotlib.pyplot as plt
import matplotlib
import numpy as np
matplotlib.rcParams['font.family']='SimHei'
matplotlib.rcParams['axes.unicode_minus']=False

stuScore=np.loadtxt('studnt_score.csv',delimiter=',')

#切掉学号,返回学生三门课程的总分
sumEach=np.sum(stuScore[:,1:],axis=1)
#返回所有学生每门课程的平均分
avgEachCourse=np.average(stuScore[:,1:],axis=0) 

maxMath=np.max(stuScore[:,1]) #返回高数最高分
maxEng=np.max(stuScore[:,2]) #返回英语最高分
maxPython=np.max(stuScore[:,3]) #返回Python最高分

minMath=np.min(stuScore[:,1]) #返回高数最低分
minEng=np.min(stuScore[:,2]) #返回英语最低分
minPython=np.min(stuScore[:,3]) #返回Python最低分

print("每个学生的三门课程的总分:")
print(sumEach)

print("所有学生的每门课程的平均分:")
print(avgEachCourse)

print("每门课程的最高分:")
print(maxMath,maxEng,maxPython)

print("每门课程的最低分:")
print(minMath,minEng,minPython)

mathScore=stuScore[:,1] #取高数成绩
engScore=stuScore[:,2] #取英语成绩
pythonScore=stuScore[:,3] #取Python成绩

plt.suptitle("课程成绩分布直方图")#为当前绘图区添加标题

#绘制高数成绩直方图  从0-100分成10段
plt.subplot(3,1,1)
plt.hist(mathScore,bins=10,range=(0,100),color='red')
plt.xlabel("高数成绩分数段")
plt.ylabel("人数")
plt.xlim(0,100)
plt.xticks([0,10,20,30,40,50,60,70,80,90,100])#设置x轴刻度
plt.yticks([0,2,4,6,8,10,12,14,16,18,20])
plt.grid()

#绘制英语成绩直方图  从0-100分成10段
plt.subplot(3,1,2)
plt.hist(mathScore,bins=10,range=(0,100),color='red')
plt.xlabel("英语成绩分数段")
plt.ylabel("人数")
plt.xlim(0,100)
plt.xticks([0,10,20,30,40,50,60,70,80,90,100])#设置x轴刻度
plt.yticks([0,2,4,6,8,10,12,14,16,18,20])
plt.grid()

#绘制python成绩直方图  从0-100分成10段
plt.subplot(3,1,3)
plt.hist(mathScore,bins=10,range=(0,100),color='red')
plt.xlabel("Python成绩分数段")
plt.ylabel("人数")
plt.xlim(0,100)
plt.xticks([0,10,20,30,40,50,60,70,80,90,100])#设置x轴刻度
plt.yticks([0,2,4,6,8,10,12,14,16,18,20])
plt.grid()
plt.show()

 

 运行效果图: 

 知识点概括:可视化:Matplotlib

Matplotlib库是一个非常强大的二维绘图库,Matplotlib提供了两个便捷的绘图子模块

pyplot:通过简洁的绘图函数实现不同的绘图功能

pylab: 使用方法与pyplot模块类似   

1.一般采用如下方式引入matplotlib库中的pyplot模块

import matplotlib.pyplot as plt

2.1 pyplot模块的使用

 举例:

import matplotlib.pyplot as plt
import matplotlib
import numpy as np
matplotlib.rcParams['font.family']='SimHei'
matplotlib.rcParams['axes.unicode_minus']=False
x=np.linspace(0,10,100)
y=np.sin(x)
plt.plot(x,y,"r")

运行效果图:

1)pyplot.plot()函数的使用

颜色风格设置:plot()函数默认情况下绘制出的图形是连续的,不过我们也可以通过增加线型的格式字符串来控制点线的颜色、风格来绘制各式各样的图形。

例如:

plt.plot(x,y,"r*:")  #红色 *号 虚线

左:效果图

2)坐标轴与标签设置

函数

描述

plt.axis()

获取或者设置轴属性的方法

plt.xlim(xmin, xmax)

设置当前x轴取值范围

plt.ylim(ymin,ymax)

设置当前y轴取值范围

plt.xticks()

设置x轴缩放/刻度

plt.yticks()

设置y轴缩放

plt.xlabel()

设置x轴的标签

plt.ylabel ()

设置y轴的标签

plt.legend()

设置当前图例

plt.text()

为图形添加文字注释

plt.title()

为坐标系添加标题

例如:

import matplotlib.pyplot as plt
import numpy as np
x=np.arange(10)
y1=x ; y2=2*x; y3=3*x
plt.plot(x,y1,"ro--",x,y2,"gv:",x,y3,"bs-")
plt.axis(‘scaled')    # 设置x轴y轴按实际比例显示
plt.xlim(0,10)        # 设置x轴的区间
plt.ylim(0,30)        # 设置y轴的区间
plt.xticks([0,1,2,3,4,5,6,7,8,9,10])
plt.yticks([5,10,15,20,25,30],['a','b','c','d','e','f']) # 'a'与5对应,'b'与[10]对应
y_ticks,labels=plt.yticks()     # 返回y轴的标签刻度值和对应标签
plt.xlabel("x-axis")    # 设置x轴标签
plt.ylabel("y-axis")    # 设置y轴标签         
plt.legend(["y1=x","y2=2x","y3=3x"])   # 添加图例
plt.text(4,2,"TEXT")  # TEXT可以换成你想要显示的文本
plt.title("TITLE")    # TITLE可以换成你想要显示的文本
plt.show()

3)pyplot模块绘图函数示例 

函数

描述

boxplot()

绘制箱型图

bar()

绘制竖向条形图

barh()

绘制横向条形图

contour()

绘制等高线

hist()

绘制直方图

pie()

绘制饼图

plot_date()

绘制包含日期型数据的图

polar()

绘制极坐标图

psd()

功率谱密度

scatter()

绘制散点图

specgram()

绘制频谱图

stem()

绘制火柴杆图

step()

绘制步阶图

例如:饼图

import matplotlib.pyplot as plt

Labels = 'Class-A', 'Class-B', 'Class-C', 'Class-D'

data = [15, 30, 45, 10]

Explode = (0, 0.1, 0, 0)  #这些数值用来扩大饼图中的特定部分(给定为0的部分将保持其原始大小)。

#在这个例子中,'Class-B'部分将会被扩大10%,其余部分保持不变。

plt.pie(data, explode=Explode,labels=Labels,autopct='%.2f%%')

plt.show()

4)子图绘制——subplot()函数 

subplot ( nrow, ncols,index):

在绘图区域创建子绘图区域。

nrows:把绘图区分割成nrows行

ncols:把绘图区分割成ncols列

index:指定当前子绘图区域的索引  从1开始,1、2、3...

*中文显示问题

import matplotlib.pyplot as plt

import matplotlib

matplotlib.rcParams['font.family']='kaiti'

matplotlib.rcParams['axes.unicode_minus']=False # 设置负号显示正常

标识符

描述

‘Simhei’

黑体

‘Kaiti’

楷体

‘Microsoft YaHei’

微软雅黑

例如:

plt.title("坐标系标题",fontproperties="Simhei")

实操注意事项

1.查看电脑中matplotlib相关信息

2.想让图片不是显示在绘图面板而是独立显示在一个窗口

在控制台输入

%matplotlib

%matplotlib inline  #嵌入式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值