matplotlib的简单应用


学习链接: https://www.bilibili.com/video/BV1Jx411L7LU?p=14

一、基本属性

1.颜色大全

别名颜色
b蓝色
g绿色
r红色
y黄色
c青色
k黑色
m洋红色
w白色

2.形状大全

标记maker描述
‘o’圆圈
‘.’
‘D’菱形
‘s’正方形
‘h’六边形1
‘H’六边形2
‘*’星号
‘d’小菱形
‘_’水平线
‘v’一角朝下的三角形
‘8’八边形
‘<’一角朝左的三角形
‘>’一角朝右的三角形
‘p’五边形
‘,’像素
‘^’一角朝上的三角形
‘+’加号
'\ ’竖线
‘x’X

3.线条大全

线条风格描述
‘-’实线
‘:’虚线
‘–’破折线
‘None’,’ ‘,’’什么都不画
‘-.’点划线

4.中文字体设置

方式一

import matplotlib
matplotlib.rcParams['font.family'] = 'STSong' #设置字体为华文仿宋
matplotlib.rcParams['font.size'] = 20  #设置字体大小为20

方式二

只希望在某地方绘制中文字符,不改变别的地方的字体,在有中文输出的地方,增加一个属性: fontproperties

例如:
plt.xlabel('横轴:时间', fontproperties = ‘simHei’, fontsize = 20)

二、线性图

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

1.展示y=2x+1的一张图像

import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(-1,1,50)
y=2*x+1
plt.plot(x,y)
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UqZOxnoh-1595425063760)(C:\Users\qinfan\AppData\Roaming\Typora\typora-user-images\1595419957119.png)]

2.一个图里想展示两个图像

import matplotlib.pyplot as plt
import numpy as np

"""
使用plt.figure()的目的是创建一个figure对象。
整个图形被视为图形对象。当我们想调整图形的大小以及在一个图形中添加多个轴对象时,有必要显式地使用plt.figure()。
"""
x = np.linspace(-1, 1, 50)
y1 = 2 * x + 1
y2 = 5 * x + 1
plt.figure()
plt.plot(x, y1)
plt.plot(x, y2, color='red', linewidth=1.0, linestyle='--')  # 默认颜色为蓝色,linewidth设置宽度,linestyle设置样式
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VE4hjzOL-1595425063761)(C:\Users\qinfan\AppData\Roaming\Typora\typora-user-images\1595420229436.png)]

3.想同时展示两张图像

import matplotlib.pyplot as plt
import numpy as np


#如果想同时展示多张图,同一个figure下属于此figure
x=np.linspace(-1,1,50)
y1=2*x+1
plt.figure()
plt.plot(x,y1)

y2=5*x+1
plt.figure(num=3,figsize=(8,5))#参数可以不写,num=3为序号,figsize可设置展示的长和宽
plt.plot(x,y2)


plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dEu4Lom2-1595425063762)(C:\Users\qinfan\AppData\Roaming\Typora\typora-user-images\1595420026493.png)]

4.设置x,y的取值和描述

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-1, 1, 50)
y1 = 2 * x + 1
y2 = x ** 2
plt.figure()
plt.plot(x, y1)
plt.plot(x, y2, color='red', linewidth=1.0, linestyle='--')

plt.xlim((-1, 2))  # 设置x坐标范围
plt.ylim((-1, 5))  # 设置y坐标范围
plt.xlabel('i am x')  # 设置x轴描述
plt.ylabel('i am y')  # 设置y轴描述
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1dhalzb6-1595425063764)(C:\Users\qinfan\AppData\Roaming\Typora\typora-user-images\1595420499945.png)]

5.关于角标值的更换

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-1, 1, 50)
y1 = 2 * x + 1
y2 = x ** 2
plt.figure()
plt.plot(x, y1)
plt.plot(x, y2, color='red', linewidth=1.0, linestyle='--')

# 更换x角标的值
new_ticks=np.linspace(-1,2,5)
plt.xticks(new_ticks)
# 更换y角标的值为指定字符
plt.yticks([0,1,2],['a','b','c'])#需要一一对应
plt.show()

在这里插入图片描述

6.移动x和y轴位置

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-1, 1, 50)
y1 = 2 * x + 1
y2 = x ** 2
plt.figure()
plt.plot(x, y1)
plt.plot(x, y2, color='red', linewidth=1.0, linestyle='--')

plt.xlim((-1, 2))  # 设置x坐标范围
plt.ylim((-1, 5))  # 设置y坐标范围
plt.xlabel('i am x')  # 设置x轴描述
plt.ylabel('i am y')  # 设置y轴描述

# 更换x角标的值
new_ticks=np.linspace(-1,2,5)
plt.xticks(new_ticks)
# 更换y角标的值为指定字符
plt.yticks([0,1,2],['a','b','c'])#需要一一对应

# gca=get current axis
# 获取当前的轴gca
ax=plt.gca()
# 轴有四个脊梁,上下左右边框
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
# 设置x轴和y轴
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
# 将x轴和y轴移动一下
ax.spines['left'].set_position(('data',0)) # 将x轴移到y的0处
ax.spines['bottom'].set_position(('data',0))
plt.show()

在这里插入图片描述

7.增加图例

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-1, 1, 50)
y1 = 2 * x + 1
y2 = x ** 2
plt.figure()
plt.plot(x, y1,label='aaa')
plt.plot(x, y2, color='red', linewidth=1.0, linestyle='--',label='bbb')

plt.legend()
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yL75wB4P-1595425063768)(C:\Users\qinfan\AppData\Roaming\Typora\typora-user-images\1595421790349.png)]

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-1, 1, 50)
y1 = 2 * x + 1
y2 = x ** 2
plt.figure()
# 注意命名有逗号
l1,=plt.plot(x, y1,label='aaa')
l2,=plt.plot(x, y2, color='red', linewidth=1.0, linestyle='--',label='bbb')

# 可以显示想展示的线,按顺序对于label的名字,loc的参数默认是最好,找数据最少的地方
plt.legend(handles=[l1,],labels=['xx',],loc='best')
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r1zfExRf-1595425063770)(C:\Users\qinfan\AppData\Roaming\Typora\typora-user-images\1595421934088.png)]

8.增加特定点的标注

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(1, 10, 20)
y1 =  x
plt.figure()
l1,=plt.plot(x, y1,label='aaa')
plt.legend(handles=[l1,],labels=['xx',],loc='best')

x0,y0=6,6
plt.scatter(x0,y0,s=50)# 制作散点图,此处只寻找一个点
plt.plot([6,6],[6,0],'k--') # 使在这两个坐标两点之间连个线,k--是简写,表示黑色虚线

#给此点一个标注,xycoords表示xy参数的值以data数据作为标准,标注的内容是textcoords的位置是基于原始的点,arrowprops是箭头的样式
plt.annotate('i am (6,6)',xy=(x0,y0),xycoords='data',xytext=(+30,-30),textcoords='offset points',fontsize=16,
             arrowprops=dict(arrowstyle='->'))
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FoEOLlNh-1595425063770)(C:\Users\qinfan\AppData\Roaming\Typora\typora-user-images\1595423342423.png)]

三、散点图

属性写法
面积plt.scatter(x, y, s=100) 默认值s面积为20
颜色plt.scatter(x, y, c='r')默认值c颜色为blue,颜色见表1
形状plt.scatter(x, y, marker='>')默认形状为圆圈,形状见表2
透明度plt.scatter(x, y, alpha=0.5)默认为1,范围在0-1之间
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(1, 10, 10)  # 随机生成10个点
y1 = x
y2 = x + 5
plt.scatter(x, y1, alpha=1)
plt.scatter(x, y2, c='r', marker='>', alpha=0.5)  # 红色,三角,透明度0.5
plt.show()

在这里插入图片描述

四、柱状图

import matplotlib.pyplot as plt
import numpy as np

X = np.arange(10)
Y = X
plt.figure()
plt.bar(X, Y)

for x, y in zip(X,Y):
    # 描述位于x,y+0.1处,写的内容为y值得取2位小数,ha和va分别为水平和垂直对齐方式
    plt.text(x,y+0.1,'%.2f'%y,ha='center',va='bottom')

plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dlwI9u0O-1595425063772)(C:\Users\qinfan\AppData\Roaming\Typora\typora-user-images\1595424695053.png)]

五、饼图

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

ipone_list = [10, 20, 15, 40]
ipone_name_list = ['三星', '小米', '华为', '苹果']

plt.figure()
plt.pie(x=ipone_list, labels=ipone_name_list, autopct='%.1f%%')  # x为数据,labels为名字,autopct为保留的小数
plt.show()

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张烫麻辣亮。

谢谢老板支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值