matplotlib

					## 标题## matplotlib**加粗样式**

Matplotlib 是一个Python的 2D绘图库。通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。
通过学习Matplotlib,可让数据可视化,更直观的真实给用户。使数据更加客观、更具有说服力。 Matplotlib是Python的库,又是开发中常用的库
1.绘制基础
在使用Matplotlib绘制图形时,其中有两个最为常用的场景。一个是画点,一个是画线。pyplot基本方法的使用如下表。
方法名 说明
title() 设置图表的名称
xlabel() 设置x轴名称
ylabel() 设置y轴名称
xticks(x,ticks,rotation) 设置x轴的刻度,rotation旋转角度
yticks() 设置y轴的刻度
plot() 绘制线性图表
show() 显示图表
legend() 显示图例
text(x,y,text) 显示每条数据的值 x,y值的位置
figure(name,figsize=(w,h),dpi=n) 设置图片大小

2.绘制直线
根据两点绘制一条线
import matplotlib.pyplot as plt
#将(0,1)点和(2,4)连起来
plt.plot([0,2],[1,4])
plt.show()
3.绘制折线
import matplotlib.pyplot as plt

准备绘制的点

x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
plt.plot(x, y)
plt.show()
4.设置样式

导入matplotlib模块

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]

linewidth设置线条宽度

plt.plot(x, y, linewidth=5)

设置x y 轴名称

plt.xlabel(‘x’)
plt.ylabel(‘y=x^2’)
plt.rcParams[‘font.sans-serif’]=[‘SimHei’] #用来正常显示中文标签

设置标题

plt.title(‘多个点绘制折线图’)

plt.show()
重点:linewith 设置线条宽度
xlabel,ylabel 设置x y轴名称
title 设置图标标题
plt.rcParams[‘font.sans-serif’]=[‘SimHei’] #用来正常显示中文标签,解决中文乱码。
5.绘制一元二次方程
import matplotlib.pyplot as plt

准备x,y

x = range(-100, 100) # 200个点
y = [i ** 2 for i in x]

绘制一元二次方程

plt.plot(x, y)

savefig(‘resylt’) 默认格式是png

plt.savefig(‘result.jpg’)
plt.show()
重点:1.使用range函数。
2.savefig用于保存图片,默认格式为png,可以修改为jpg
6.绘制正余弦曲线
import matplotlib.pyplot as plt
import numpy as np

生成0-10 之间的100个等差数

x = np.linspace(0,10,100)
sin_y =np.sin(x)
plt.plot(x, sin_y)

cos_y =np.cos(x)
plt.plot(x, cos_y)

保存图片

plt.savefig(‘result_1.jpg’)
plt.show()
重点:使用numpy模块中的函数linespace():用于生成等差数。sin()cos()用于生成正余弦曲线。
7.subplot的应用
import matplotlib.pyplot as plt
import numpy as np

创建0-10之间的100个等差数

x = np.linspace(0, 10, 100)
sin_y = np.sin(x)

绘制正弦曲线

创建画布,对其进行分区 2行2列 划分到画布1

plt.subplot(2, 2, 1)

修改x y 轴坐标

plt.xlim(-5,20)
plt.ylim(-2,2)
plt.plot(x, sin_y)
plt.subplot(2,2 ,3)
plt.plot(x, np.cos(x))

plt.show()
重点:1.使用subplot创建画布eg:subplot(2,2,2)创建2行2列的画布,该图像划分到画布2中。
3.函数:xlim() ylim() 分别用于修改xy轴的坐标值。
8.绘制散点图
import matplotlib.pyplot as plt
import numpy as np

生成0-10之间的等差数

x = np.linspace(0,10,100)

绘制散点图

plt.scatter(x, np.sin(x))
plt.show()
重点:使用scatter() 函数绘制散点图。
import matplotlib.pyplot as plt
import numpy as np

创建10种大小,20种颜色的图案

np.random.seed(0) # 执行多次获取的随机数都是一样的
x = np.random.rand(20)
y = np.random.rand(20)

生成20中大小

size = np.random.rand(20)*100

生成20中颜色

color = np.random.rand(20)

绘制散点图

plt.scatter(x,y,s=size,c=color,alpha=0.7) # s是尺寸的大小,c是颜色,alpha是透明度
plt.show()
重点:1.函数numpy.range.seed(0):保持x y生成的数据相等
2.s c 分别为尺寸和颜色。alpha是透明度(0-1)
注意:点的个数和颜色的个数要相同,点的个数和点大小的个数可以不同,如果点的个数大于大小的个数,则会循环获取大小。s 要么是标量,要么必须和x y的大小一致。
9.绘制不同颜色不同样式的点。
import matplotlib.pyplot as plt
import numpy as np

创建x

x = np.linspace(0,10,100)

使用legend()图例,给plot方法添加函数label

plt.plot(x, x+0,’–g’,label=’–g’)
plt.plot(x, x+1,’-.r’,label=’-.r’)
plt.plot(x,x+2,’:b’,label=’:b’)
plt.plot(x,x+3,’.k’,label=’.k’)
plt.plot(x,x+4,’,c’,label=’,c’)
plt.plot(x,x+5,’*y’,label=‘y’) # fancybox边框 framealpha透明度 shadow阴影 borderpad边框宽度
plt.legend(loc=‘upper right’,fancybox=True,framealpha=0.5,shadow=True,borderpad=1) # 默认位置是左上角,可以使用loc函数进行更改
plt.show()
重点:lengend():创建一个图例
lock 调整提示框位置(默认左上角)fancybox边框 framealpha透明度 shadow阴影 borderpad边框宽度
了解:
作为线性图的替代,可以通过向 plot() 函数添加格式字符串来显示离散值。 可以使用以下格式化字符。
字符 描述
‘-’ 实线样式
‘–’ 短横线样式
‘-.’ 点划线样式
‘:’ 虚线样式
‘.’ 点标记
‘,’ 像素标记
‘o’ 圆标记
‘v’ 倒三角标记
‘^’ 正三角标记
‘1’ 下箭头标记
‘2’ 上箭头标记
‘3’ 左箭头标记
‘4’ 右箭头标记
‘s’ 正方形标记
‘p’ 五边形标记
'
’ 星形标记
‘h’ 六边形标记 1
‘H’ 六边形标记 2
‘+’ 加号标记
‘x’ X 标记
‘D’ 菱形标记
‘d’ 窄菱形标记
‘_’ 水平线标记
以下是颜色的缩写:
字符 颜色
‘b’ 蓝色
‘g’ 绿色
‘r’ 红色
‘c’ 青色
‘m’ 品红色
‘y’ 黄色
‘k’ 黑色
‘w’ 白色
10.绘制柱状图
import matplotlib.pyplot as plt
import numpy as np

创建x y x表示年份,y表示销量

x = [1980, 1985, 1990, 1995]
x_label = [‘1980年’, ‘1985年’, ‘1990年’, ‘1995年’]
y = [1000, 3000, 4000, 5000]

调用bar函数绘制柱状图

plt.bar(x, y, width=3) # width修改柱宽度

修改中文乱码

plt.rcParams[‘font.sans-serif’]=[‘SimHei’] # 用来正常显示中文标签

修改x轴坐标值

plt.xticks(x, x_label)

给x y轴添加名称

plt.xlabel(‘年份’)
plt.ylabel(‘销量’)
plt.title(‘根据年份限量对比图’)
plt.show()
重点:bar()函数:绘制柱状图
xticks:修改x轴的坐标值
11.bar函数与barth函数的区别
import matplotlib.pyplot as plt
import numpy as np

生成 x y

np.random.seed(0)
x = np.arange(5)
y = np.random.randint(-5,5,5)

将画布分为一行两列 第一列放bar

plt.subplot(1,2,1)

在0位置水平方向增加线条

plt.axhline(0,color=‘blue’,linewidth=2)
plt.bar(x,y)

在第二个位置画barh 将y轴与x轴进行交换 竖着的为x轴

plt.subplot(1,2,2)
plt.axvline(0,color=‘red’,linewidth=2)
plt.barh(x,y,color=‘red’)
plt.show()
重点:barh()函数就是将x y轴进行了对调。
axhline()在水平方向添加水平线。eg:axhline(0,color=‘blue’,linewidth=2)在0位置添加一条蓝色水平线,宽度为2
axvline()在竖直方向添加水平线。
12.不同颜色设置柱
import matplotlib.pyplot as plt
import numpy as np

生成 x y

np.random.seed(0)
x = np.arange(5)
y = np.random.randint(-5,5,5)

添加颜色

v_bar = plt.bar(x,y,color=‘blue’)

对y轴大于0的设置为蓝色。对y轴小于0的设置为绿色

for bar,height in zip(v_bar,y):
if height<0:
bar.set(color=‘green’)
plt.show()

重点:zip() 返回的是一个对象。

a = [1,2,3]
b = [4,5,6]
c = [4,5,6,7,8]
zipped = zip(a,b) # 打包为元组的列表 [(1, 4), (2, 5), (3, 6)]
zip(a,c) # 元素个数与最短的列表一致 [(1, 4), (2, 5), (3, 6)]
zip(*zipped) # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式 [(1, 2, 3), (4, 5, 6)]
13.柱状图的使用
import matplotlib.pyplot as plt
import numpy as np

三部电影名称

real_name = [‘千与千寻’, ‘玩具总动员’, ‘黑衣人:全城通缉’]

3天内票房

real_num1 = [7548, 4600, 1658]
real_num2 = [5453, 2346, 1223]
real_num3 = [4523, 2356, 1133]
x = np.arange(len(real_name))
width = 0.3
plt.bar(x, real_num1, alpha=0.5, width=width,label=real_name[0])
plt.bar([i + width for i in x], real_num2, alpha=0.5, width=width,label=real_name[1])
plt.bar([i + 2 * width for i in x], real_num3, alpha=0.5, width=width,label=real_name[2])
plt.rcParams[‘font.sans-serif’]=[‘SimHei’] # 用来正常显示中文标签
x_label = [‘第一天’, ‘第二天’, ‘第三天’]
plt.xticks([i+width for i in x], x_label)
plt.ylabel(‘票房数’)
plt.title(‘三部电影三天票房数’)

添加图例

plt.legend()
plt.show()
14.绘制饼状图
import matplotlib.pyplot as plt
import numpy as np

准备数据

man = 788954
woman = 655512
man_prec = man / (man + woman)
woman_prec = woman / (man + woman)
labels = [‘男’, ‘女’]
colors = [‘blue’, ‘red’]

labels名称 colors颜色 explode 分割 autopct 显示百分比

paches, texts, autotexts = plt.pie([man_prec, woman_prec], labels=labels, colors=colors, explode=(0, 0.05),
autopct=’%0.1f%%’)
plt.rcParams[‘font.sans-serif’] = [‘SimHei’] # 用来正常显示中文标签

设置饼状图字体颜色

for text in autotexts:
text.set_color(‘white’)

设置字体大小

for text in texts+autotexts:
text.set_fontsize(20)
plt.show()
重点:pie()函数:绘制饼状图 labels名称 colors颜色 explode 分割 autopct 显示百分比
15.正态分布
import matplotlib.pyplot as plt
import numpy as np

生成1000个正态分布的随机数

x = np.random.randn(1000)

修改柱的宽度使用bins

plt.hist(x,bins=100) # 每10柱装成一个
plt.show()
重点:hist()函数:绘制正态分布图。使用bins进行调整
import matplotlib.pyplot as plt
import numpy as np

使用np.random.normal()制定期望和均值的正态分布

x = np.random.normal(0,0.8,1000)
y = np.random.normal(-2,1,1000)
z = np.random.normal(3,2,1000)
kwargs = dict(bins=100,alpha=0.5)
plt.hist(x,**kwargs)
plt.hist(y,**kwargs)
plt.hist(z,**kwargs)
plt.show()
重点:np.random.normal():制定期望和均值的正态分布
16.绘制等高线图
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-10, 10, 100)
y = np.linspace(-10, 10, 100)

计算x y相交的点 X Y

X, Y = np.meshgrid(x, y)

计算Z

Z = np.sqrt(X ** 2 + Y ** 2)

绘制等高线图

plt.contour(X, Y, Z)

plt.contourf(X,Y,Z)
plt.show()
重点:meshgrid返回的两个矩阵X、Y必定是行数、列数相等的,且X、Y的行数都等

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值