Matplotlib画图之代码片段

基本用法

1.1引入库文件

import matplotlib.pyplot as plt

1.2画直线

plt.plot(x,y)#(所有点的x坐标/所有点的y坐标)
plt.show

plt.plot(x,y1,color='red',linewidth = 10.0,linestyle = '--')#一张图片花两条线(设置线的颜色,线条宽度,线条样式--/-)

1.3画散点图

plt.scatter((1,2),(2,3))#画散点图(所有点的x坐标/所有点的y坐)

plt.scatter(X, Y, s=25, c=A, alpha=.5)#(x轴)(y轴)(点大小)(颜色数值)(不透明度)
plt.show

1.4画柱状图

plt.bar((1,2),(2,3))#画柱状图(第几个柱状图/柱状图的值)

plt.bar(X, +Y1, facecolor='#9999ff', edgecolor='white')#画出柱状图 标记颜色 和边框颜色(正半轴)
plt.bar(X, -Y2, facecolor='#ff9999', edgecolor='white')#(负半轴)

#画柱状图数值显示
for x, y in zip(X, Y1):#拿出每一点的值
    plt.text(x + 0.1, y + 0.05, '%.2f' % y, ha='center', va='bottom') #设置text /x坐标轴/y坐标轴/文字/横向排布方式/纵向排布方式

plt.show

1.5等高线图

#数据存在三个维度(x,y,z)
plt.contourf(X, Y, Z, 8, alpha=.75, cmap=plt.cm.cool)#x,y,z的数字/分成几个刻度/不透明度/地图是什么样的颜色(hot/cool)
C = plt.contour(X, Y, Z, 8, colors='black', linewidths=.5)#绘制等高线x,y,z的数字/分成几个刻度/线的颜色/线宽
plt.clabel(C, inline=True, fontsize=10)#显示高度数字  (显示在线内线外)(字体大小)

1.6显示图片

plt.imshow(a, interpolation='nearest', cmap='hot', origin='lower')#画出2d图像 数据/模糊方式/图片显示方式/位置显示方式
plt.colorbar(shrink=.92)#显示旁边的长条参数传入压缩比例

1.7显示3D图

from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = Axes3D(fig)#将窗口变成3D的


ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.get_cmap('rainbow'))
#画3D图x/y/z/往前的线相隔距离/往左的线相隔距离/地图样式


ax.contourf(X, Y, Z, zdir='z', offset=-2, cmap=plt.get_cmap('rainbow'))
#绘制平面图的样式x/y/z/从哪个角度画/画在哪个刻度/地图样式

1.8显示动态图

from matplotlib import pyplot as plt
from matplotlib import animation
ani = animation.FuncAnimation(fig=fig,
                              func=animate,
                              frames=100,
                              init_func=init,
                              interval=20,
                              blit=True)
'''                             
fig 进行动画绘制的figure
func 自定义动画函数,即传入刚定义的函数animate
frames 动画长度,一次循环包含的帧数
init_func 自定义开始帧,即传入刚定义的函数init
interval 更新频率,以ms计
blit 选择更新所有点,还是仅更新产生变化的点。应选择True,但mac用户请选择False,否则无法显示动画
'''
动态图例子
from matplotlib import pyplot as plt
from matplotlib import animation
import numpy as np
fig, ax = plt.subplots()
x = np.arange(0, 2*np.pi, 0.01)
line, = ax.plot(x, np.sin(x))
def animate(i):
    line.set_ydata(np.sin(x + i/10.0))
    return line,
def init():
    line.set_ydata(np.sin(x))
    return line,
ani = animation.FuncAnimation(fig=fig,
                              func=animate,
                              frames=100,
                              init_func=init,
                              interval=20,
                              blit=True)
plt.show()

图框设置

2.1新的图框,图框设置编号、图框宽高(不改变刻度)

plt.figure()#设置这是单独的一张图片
plt.figure(num=3,figsize=(2,10))#设置这是单独的一张图片,并写编号是3,宽高分别是2和10

2.2设置x、y轴刻度范围 x、y轴标注

plt.xlim((-1, 2))#设置x轴范围
plt.ylim((-2, 3))#设置y轴范围
plt.xlabel('I am x')#设置x轴标注
plt.ylabel('I am y')#设置y轴标注

2.3x、y轴重新规定刻度

new_ticks = np.linspace(-1, 2, 5)
plt.xticks(new_ticks)#设置x轴采用新的坐标划分
plt.yticks(new_ticks)#设置x轴采用新的坐标划分
plt.show

2.4使用文字代替原先的坐标轴

#使用文字代替原先的坐标轴
plt.yticks([-2, -1.8, -1, 1.22, 3],[r'$really\ bad$', r'$bad$', r'$normal$', r'$good$', r'$really\ good$'])
plt.show()

2.5设置边框隐藏

ax = plt.gca()
ax.spines['right'].set_color('none')#设置右边框隐藏
ax.spines['top'].set_color('none')#设置上边框隐藏
ax.spines['bottom'].set_color('none')#设置下边框隐藏
ax.spines['left'].set_color('none')#设置左边框隐藏
plt.show()

2.6设置坐标隐藏

plt.xticks(())  # 隐藏x坐标轴
plt.yticks(())  # 隐藏y坐标轴

2.7设置坐标轴在图片位置(绝对)

ax = plt.gca()
ax.spines['right'].set_color('none')#设置右边框隐藏
ax.spines['top'].set_color('none')#设置上边框隐藏
ax.xaxis.set_ticks_position('bottom')#设置用x轴代替下边框
ax.spines['bottom'].set_position(('data', 0))#设置下边框边框位置
ax.yaxis.set_ticks_position('left')#设置用y轴代替左边框
ax.spines['left'].set_position(('data',0))#设置左边框边框位置
plt.show()

2.8设置坐标轴在图片位置(相对)

ax = plt.gca()
ax.spines['right'].set_color('none')#设置右边框隐藏
ax.spines['top'].set_color('none')#设置上边框隐藏
ax.xaxis.set_ticks_position('bottom')#设置用x轴代替下边框
ax.spines['bottom'].set_position(('axes', .5))#设置下边框边框位置(相对)
ax.yaxis.set_ticks_position('left')#设置用y轴代替左边框
ax.spines['left'].set_position(('axes',.5))#设置左边框边框位置(相对)

2.9线置于哪层

plt.plot(x, y, zorder=1)#最后一个参数越大显示越接近顶层

2.10刻度能见度设置

for label in ax.get_xticklabels() + ax.get_yticklabels():#拿出x轴和y轴的所有显示
    label.set_fontsize(12)#调整大小
    # 在 plt 2.0.2 或更高的版本中, 设置 zorder 给 plot 在 z 轴方向排序
    label.set_bbox(dict(facecolor='white', edgecolor='None', alpha=0.7, zorder=2))#设置坐标轴刻度
    #(颜色)(边框)(不透明度)( )

2.11 次坐标轴

fig, ax1 = plt.subplots()
ax2 = ax1.twinx()#对ax1调用twinx()方法,生成如同镜面效果后的ax2:
#在不同的(ax1/ax2)画图(.plot)就行

注释和线名称标注

3.1线名称标注

plt.plot(x, y1, label='linear line')
plt.plot(x, y2, label='square line')#想要显示标注就要在label后面加上名称
plt.legend(loc='best')#设置标注并设置标注位置(best/lower right/lower left/upper right/upper left)

3.2线名称标注替代

l1, = plt.plot(x, y1)
l2, = plt.plot(x, y2)#l2,(必须有逗号)接收返回值可以在后面动
 plt.legend(handles=[l1, l2], labels=['up', 'down'],  loc='best')#在动态改变名称,并选择标注位置(best/lower right/lower left/upper right/upper left)

3.3对一点注释

plt.annotate(r'$hello$'  , xy=(x0, y0), xycoords='data', xytext=(+30, -30), textcoords='offset points',
 fontsize=16,arrowprops=dict(arrowstyle='->', connectionstyle="arc3,rad=.2"))
#画出注解(标注词)(在那个点)(参照是数据还是比例)(横坐标挪动,纵坐标挪动)(必须)(字体大小)
#(标注线的样式)

3.4文字注释

plt.text(-3.7, 3, r'$This\ is\ the\ some\ text. \mu\ \sigma_i\ \alpha_t$',
         fontdict={'size': 16, 'color': 'r'})
#text标注(坐标点)(文字)(文字样式)

图片排布设置

4.1多条线一张图、一条线一张图

#多条线一张图
plt.figure()#设置这是单独的一张图片,并写编号是3,宽高分别是2和10
plt.plot(x,y1)
plt.figure()#设置这是单独的一张图片
plt.plot(x,y2)

#一条线一张图
plt.figure()#设置这是单独的一张图片
plt.plot(x,y2)
plt.plot(x,y1)#一张图片花两条线(设置线的颜色,线条宽度,线条样式)

4.2一张大图画多张小图


plt.figure()
plt.subplot(2,1,1)#分成几行几列,在第几的位置画图
plt.plot([0,1],[0,1])
plt.subplot(2,3,4)
plt.plot([0,1],[0,2])
plt.subplot(2,3,5)
plt.plot([0,1],[0,3])
plt.subplot(2,3,6)
plt.plot([0,1],[0,4])
plt.show()  # 展示
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
plt.figure()
gs = gridspec.GridSpec(3, 3)#创建3行3列的大图
ax6 = plt.subplot(gs[0, :])#设置其中一个小图所占大小
ax7 = plt.subplot(gs[1, :2])
ax8 = plt.subplot(gs[1:, 2])
ax9 = plt.subplot(gs[-1, 0])
ax10 = plt.subplot(gs[-1, -2])

4.3共用x,y坐标轴

import matplotlib.pyplot as plt
f, ((ax11, ax12), (ax13, ax14)) = plt.subplots(2, 2, sharex=True, sharey=True)#分给两行两列的小图#并分给前面不同的变量
ax11.scatter([1,2], [1,2])#第一张图画法
plt.tight_layout()#紧凑显示图像
plt.show()

4.4图中图

# 导入pyplot模块
import matplotlib.pyplot as plt

# 初始化figure
fig = plt.figure()

# 创建数据
x = [1, 2, 3, 4, 5, 6, 7]
y = [1, 3, 4, 2, 5, 8, 6]

left, bottom, width, height = 0.1, 0.1, 0.8, 0.8
ax1 = fig.add_axes([left, bottom, width, height])#显示在大图中的位置比例
ax1.plot(x, y, 'r')
ax1.set_xlabel('x')
ax1.set_ylabel('y')
ax1.set_title('title')

left, bottom, width, height = 0.2, 0.6, 0.25, 0.25
ax2 = fig.add_axes([left, bottom, width, height])
ax2.plot(y, x, 'b')
ax2.set_xlabel('x')
ax2.set_ylabel('y')
ax2.set_title('title inside 1')

plt.axes([0.6, 0.2, 0.25, 0.25])
plt.plot(y[::-1], x, 'g') # 注意对y进行了逆序处理
plt.xlabel('x')
plt.ylabel('y')
plt.title('title inside 2')
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值