matplolib函数总结

matplotlib

绘图函数

plot

plot : 绘制二维图形 , 将平面的点连接起来

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-np.pi, np.pi, 256,endpoint=True)
plt.plot(x,np.cos(x)) # x轴 y轴
plt.show() # 最后输入这个
# 不指定x轴则会为0,1,2...n-1

Ht3A6P.png

scatter

scatter : 绘制散点图

x = np.random.randint(1,30,(1,8))
y = np.random.randint(1,30,(1,8))
Size = np.random.randint(10,500,(1,8))
Color = np.array(["red","green","black","orange","purple","beige","hotpink","magenta"])
# 颜色可以用RGB代码表示
# 类似于聚类的图可以画两次,每一次换一个颜色
plt.scatter(x,y,s=Size,c=Color,alpha=0.5) # alpha 是透明度,设置了要好看一点
plt.show()

HNUKwq.png

x = np.random.randint(1,100,(1,300))
y = np.random.randint(1,100,(1,300))
y.sort() # 先排个序,也可以不排
colors = np.arange(300) # 个数必须和上面对应,可以自己设置颜色,可以理解为最后归一化决定颜色

plt.scatter(x, y, c=colors, cmap='viridis') # camp是颜色条名字
plt.colorbar() # 显示色条
plt.show()

HNUVSg.png

可选参数 更多颜色

coolwinterviridisrainbowtwilightterrainspring
prismplasmapinkoceanjetflagBlues
bar , barh

bar : 画柱状图

barh : 横着的柱状图 , 用法和bar相同

x = np.array(['col-1','col-2','col-3','col-4'])
y = np.array([3,8,5,9])
Color = np.array(['red','blue','green','hotpink'])
plt.bar(x,y,color=Color,width=0.9) # width 是[0,1]
# 如果是barh就是height
plt.show()

HNsIyT.png

pie

pie : 绘制饼图

参数说明取值
x每个扇形的值列表
lables每个扇形的名字列表
explod每个扇形的间隔列表 , 代表每一个扇形与其他扇形的距离 (0.1合适)
colors颜色列表 , 扇区的颜色
autopct扇形显示百分比整数’%d%%’ , 小数’%0.1f’ , 小数百分比’%0.1f%%’
labeldistance标签距离扇形的距离默认1.1 , 小于1就在扇形里面
pctdistance扇形百分比的位置默认0.6
y = np.array([35, 25, 25, 15])
plt.pie(y,
        labels=['A','B','C','D'],
        colors=["red", "lightblue", "green", "hotpink"],
        explode=[0.1,0,0,0],
        autopct='%d%%',
       )
plt.show()

HUY6M9.png

图像参数和标注

figure

figure : 调整画的图片的尺寸

plt.figure(figsize=(8,5),dpi=80)
legend

legend : 在一图多函数的时候 , 可以对每一个函数进行标注名字

plot(x1,y1,label='cos') # 画图标记名字
plot(x2,y2,label='sin')
plt.legend(loc='upper left',frameon = False)
# 标记地方,和是否需要一个小边框
import matplotlib.pyplot as plt
import numpy as np

ax = plt.subplot()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none') 
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0)) 

x1 = np.linspace(-np.pi,np.pi,300)
x2 = np.linspace(-np.pi/2,np.pi*3/2,300)
y1 = np.cos(x1)
y2 = np.sin(x2)

plt.plot(x1,y1,label="cos")
plt.plot(x2,y2,label='sin')
plt.legend(loc='best',frameon = False)
plt.show()

HaMvVS.png

位置是以下几个词语的排列组合 (left , right放在最后)

bestrightlower
centerleftupper
annotate

annotate : 在图像上标注点

# latex 的标注内容
# xy:标注点的位置
# xytext:注解内容位置坐标
# fontsize:字体大小
# xycoords,textcoords,arrowprops 基本上不用调整
pointx,pointy = 1,2
plt.plot([pointx,pointx],[0,pointy],linestyle="--")
plt.scatter([pointx],[pointy], 50,)
# 顺便添加一个辅助线,z 
plt.annotate(r'$this point$',
             xy=(pointx,pointy),
             xytext=(-90, -50),
             xycoords='data',
             textcoords='offset points',
             fontsize=16,
             arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2")
            )

线条参数

颜色字符线型字符标记字符
蓝色b实线-点标记.
红色r破折线像素标记,
黄色y点划线-.实心圈o
黑色k虚线:倒三角v
绿色g上三角^
白色w星星*

更多形状参见绘图标记 绘图线

坐标轴

spines

spines : 设置坐标轴的相关参数

ax = plt.subplot()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))
xticks , yticks

xticks : 设置x轴显示的数字

yticks : 设置y轴显示的数字

x = np.linspace(-np.pi, np.pi, 256,endpoint=True)
plt.plot(x,np.cos(x))
plt.xticks(np.linspace(-np.pi,np.pi,9))
plt.yticks(np.linspace(-2,2,9))
plt.show()

还支持latex , 一个一个对应的方式

x = np.linspace(-np.pi, np.pi, 256,endpoint=True)
plt.plot(x,np.cos(x))
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],['$-\pi$','$-\pi/2$','$0$','$+\pi/2$','$+\pi$'])
plt.show()

防止遮挡xy轴的数字

for label in ax.get_xticklabels() + ax.get_yticklabels():
    label.set_fontsize(16)
    label.set_bbox(dict(facecolor='white', edgecolor='None', alpha=0.65 ))

但是使用之前要先设置plot里面的 zorder ,也就是遮挡优先级 ,还需要用subplot生成一个 ax

ax = plt.subplot(111)
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))

X = np.linspace(-np.pi, np.pi, 256,endpoint=True)
C,S = np.cos(X), np.sin(X)

plt.plot(X, C,zorder=-1)
plt.plot(X, S,zorder=-2)

for label in ax.get_xticklabels() + ax.get_yticklabels():
    label.set_fontsize(16)
    label.set_bbox(dict(facecolor='white', edgecolor='None', alpha=0.65 ))
plt.show()
xlim , ylim

xlim : 设置x轴上下限

ylim : 设置y轴上下限

plt.xlim(x.min()*1.1,x.max()*1.1) # 1.1是默认值
# 下限 上限
# ylim同理

中文设置

方法一

字体下载 [yxqu]

本地路径 “C:\chinese.otf”

这种方法不会改变全局字体

chinese = matplotlib.font_manager.FontProperties(fname="C:\\chinese.otf") 
# 设置路径
plt.title("余弦函数",fontproperties=chinese) # 使用方法
plt.xlabel("x轴",fontproperties=chinese)
方法二

这种方法会改变全局字体 , 就都可以使用中文了

plt.rcParams['font.sans-serif']=['SimHei']
宋体黑体微软雅黑新宋体楷体
SimSunSimHeiMicrosoft YaHeiNSimSunKaiTi

标签

xlable , ylable

xlable : x轴标签

ylable : y轴标签

可以添加 fontdict , size , loc 参数

plt.xlabel("x轴", fontproperties=zhfont1,fontdict={'color':'red'},size=10)
plt.ylabel("y")
title

title : 加上一个标题

plt.title("x-cos(x)") # 可以添加size参数显得标题大一点

利用 title , xlable , ylable 的 loc 位置参数

函数参数参数默认参数
xlableleftrightcenter
ylablebottomtopcenter
titleleftrightcenter
plt.xlable("x_lable",loc="left")

网格线

grid

grid : 添加一个网格线 , 具体参数可以看 “线条参数”

plt.grid(color = 'r', linestyle = '--', linewidth = 0.5,axis = 'x')

多图绘制

subplot

subplot : 划分区域画图

subplot(1,2,1) # 1*2的subplot 编号1
# ....plot....
subplot(1,2,2) # 1*2的subplot 编号2
# ....plot....
suptitle

suptitle : 给多图绘制一个大标题

plt.suptitle("subplot Test")
subplots

subplots : 绘制多个图形 , 相比subplot功能更多

import matplotlib.pyplot as plt
import numpy as np

x1 = np.arange(12)
y1 = x1**2+x1-2
x2 = np.linspace(-np.pi,np.pi,256)
y2 = 7*np.cos(x2)

[fig,area] = plt.subplots(2,2)
area[0,0].plot(x1,y1)
area[1,1].plot(x2,y2)
plt.show()

HNMhDS.png

plt.subplots(2, 2, sharey='all') # 共享y轴
plt.subplots(2, 2, sharex='all') # 共享x轴
# 两个都共享效果不太好

参考资料

matplotlib官网

更多绘图函数

examples

菜鸟教程1

菜鸟教程2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

d3ac

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值