python autowire库讲解_如何最简单、通俗地理解Python的matplotlib库?

目录:

一、笔记

二、我的自学路线

三、笔记目录

一、笔记

① matplotlib是Python最常用的绘图库,提供了一整套十分适合交互式绘图的命令,是非常强大的Python画图工具。

② matplotlib可以画线图、散点图、等高线图、条形图、柱形图、3D图形、图形动画。

③ 想要使用matplotlib绘图,必须要先创建一个figure(画布)对象,然后还要有axes(坐标系)。

④ 当第一次执行http://plt.xxx()画图代码时,系统会判断是否已经有了figure对象,如果没有,系统会自动创建一个figure对象,并且在这个figure至上,自动创建一个axes坐标系(注意:默认只创建一个figure对象,一个axes坐标系)。也就是说,如果我们不设置figure对象,那么一个figure对象上,只能有一个axes坐标系,即我们只能绘制一个图形。

⑤ import matplotlib.pyplot as plt,导入matplotlib模块pyplot的模块,并简写成plt。

⑥ 可以调用pyplot模块的.plot方法绘制一些坐标,这个plot方法需要许多参数,但前两个是 "x" 和 "y" 坐标,放入列表。

⑦ plt.plot在后台[绘制]这个绘图,当绘制了我们想要的一切之后,需要把它带到屏幕上时,运用plt.show方法。

⑧ 设置在jupyter notebook中matplotlib的显示情况有两种方式:%matplotlib tk 在GUI显示

%matplotlib inline 在行内显示

import matplotlib.pyplot as plt

# %matplotlib tk 在GUI显示

%matplotlib inline

plt.plot([1,2,3],[5,6,7])

plt.show

运行结果:

import matplotlib.pyplot as plt

import numpy as np

%matplotlib inline

figure = plt.figure()

axes1 = figure.add_subplot(3,2,1) # 第一个数表示幕布figure有多少行,第二个数表示幕布有多少列,这里一共有 3*2 = 6 的索引,第三个值为绘图在哪个第几个索引上。

axes2 = figure.add_subplot(6,1,2) # axe2 和 axe1 是在同一个画布上画,但是每个划分区域,要画的位置不互相影响,但是由于在同一张幕布上,所以绘图索引对应的绘图有可能重叠

axes3 = figure.add_subplot(3,2,2)

axes1.plot([1,2,5,7],[4,5,6,7])

axes2.plot([6,7,2,5],[1,2,8,2])

axes3.plot([0,1,4,6],[8,2,5,7])

plt.show

运行结果:

plt.figure()

plt.subplot(2,1,1) # 表示整个图像分割成2行2列,当前位置为1

plt.plot([0,1],[0,1]) # 横坐标变化为[0,1],竖坐标变化为[0,2]

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 numpy as np

%matplotlib inline

figure = plt.figure()

axes1 = figure.add_subplot(3,2,1)

axes2 = figure.add_subplot(3,2,1) # 如果行、列、索引都一样,那么就会在同一张图里用不同颜色画两条线

axes3 = figure.add_subplot(3,2,2)

axes1.plot([1,2,5,7],[4,5,6,7])

axes2.plot([6,7,2,5],[1,2,8,2])

axes3.plot([0,1,4,6],[8,2,5,7])

plt.show

运行结果:

import matplotlib.pyplot as plt

fig1 = plt.figure(num='figl',figsize=(6,9)) # 图片最左上角图片的title的名字为figl

%matplotlib inline

plt.xlim(0,20) # x轴坐标

plt.ylim(0,10) # y轴坐标

plt.show # 也可以用fig1.show

运行结果:

import matplotlib.pyplot as plt

import numpy as np

plt.figure('正弦曲线')

x = np.linspace(-1,1,50)

y1 = 2 *x +1

y2 = x **2

plt.figure() # 定义一个图像窗口

plt.plot(x,y1) # 画出曲线

plt.plot(x,y1,color='red',linewidth=2,linestyle='--') # 线的参数为红色、线宽为2、虚线

plt.plot(x,y2,color='green',marker='o',linewidth=1,markersize=3) # 点取o形,o形大小为3

plt.show # 显示图像

运行结果:

import matplotlib.pyplot as plt

plt.figure('正弦曲线')

x = np.linspace(-1,1,50)

y1 = 2 *x +1

y2 = x **2

plt.figure() # 定义一个图像窗口

plt.plot(x,y1) # 画出曲线

plt.plot(x,y1,color='red',linewidth=2,linestyle='--') # 线的参数为红色、线宽为2、虚线

plt.plot(x,y2,color='green',marker='o',linestyle='dashed',linewidth=1,markersize=3) # dashed也可以表示虚线,也可以用linstyle=':'

plt.xlabel("I'm x") # 自定义x坐标轴

plt.ylabel("I'm y") # 自定义x坐标轴

new_ticks = np.linspace(-1,2,5)

plt.xticks(new_ticks) # 替换x轴上新的下标

plt.yticks([-2,-1,1,2],[r'$really\ bad$','$bad$','$well$','$really\ well$']) # 替换y轴上新的坐标轴

# 若不加转义符\,那么会不识别空格,连在一起了

# 没有美元符号$,会把转义字符\也打印出来,所以当只有单个单词时,可以不加美元符号

# 不加转义r,不加美元符号,那么可以直接用空格,并且替换的值为正体,加了美元符号,字体变得倾斜

plt.show() # 显示图像

运行结果:

import matplotlib.pyplot as plt

plt.figure('正弦曲线')

x = np.linspace(-1,1,50)

y1 = 2 *x +1

y2 = x **2

plt.figure() # 定义一个图像窗口

plt.plot(x,y1) # 画出曲线

plt.plot(x,y1,color='red',linewidth=2,linestyle='--') # 线的参数为红色、线宽为2、虚线

plt.plot(x,y2,color='green',marker='o',linestyle='dashed',linewidth=1,markersize=3) # dashed也可以表示虚线,也可以用linstyle=':'

plt.xlabel("I'm x") # 自定义x坐标轴

plt.ylabel("I'm y") # 自定义x坐标轴

new_ticks = np.linspace(-1,2,5)

plt.xticks(new_ticks) # 替换x轴上新的下标

plt.yticks([-2,-1,1,2],[r'$really\ bad$','$bad$','$well$','$really\ well$']) # 替换y轴上新的坐标轴

ax = plt.gca() # gca = get current axis

ax.spines['right'].set_color('none') # 边框属性设置为none不显示,right为右边框

ax.spines['top'].set_color('none') # top为上边框

plt.show() # 显示图像

运行结果:

import matplotlib.pyplot as plt

plt.figure('正弦曲线')

x = np.linspace(-1,1,50)

y1 = 2 *x +1

y2 = x **2

plt.figure() # 定义一个图像窗口

plt.plot(x,y1) # 画出曲线

plt.plot(x,y1,color='red',linewidth=2,linestyle='--') # 线的参数为红色、线宽为2、虚线

plt.plot(x,y2,color='green',marker='o',linestyle='dashed',linewidth=1,markersize=3) # dashed也可以表示虚线,也可以用linstyle=':'

plt.xlabel("I'm x") # 自定义x坐标轴

plt.ylabel("I'm y") # 自定义x坐标轴

new_ticks = np.linspace(-1,2,5)

plt.xticks(new_ticks) # 替换x轴上新的下标

plt.yticks([-2,-1,1,2],[r'$really\ bad$','$bad$','$well$','$really\ well$']) # 替换y轴上新的坐标轴

ax = plt.gca() # gca = get current axis

ax.spines['right'].set_color('none') # 边框属性设置为none不显示,right为右边框

ax.spines['top'].set_color('none') # top为上边框

plt.plot(x,y1,color='red',linewidth=2,linestyle='--',label='linear line') # 划线的地方设置label

plt.legend(loc='best') # 将图例放在最好的位置

# plt.legend(loc=1) 1 表示设置为右上角

plt.show() # 显示图像

运行结果:

import matplotlib.pyplot as plt

plt.figure('正弦曲线')

x = np.linspace(-1,1,50)

y1 = 2 *x +1

y2 = x **2

plt.figure() # 定义一个图像窗口

# 设置标签的第二种方法

l1, = plt.plot(x,y1,color='red',linewidth=2,linestyle='--') # 线的参数为红色、线宽为2、虚线

l2, = plt.plot(x,y2,color='green',marker='o',linestyle='dashed',linewidth=1,markersize=3) # dashed也可以表示虚线,也可以用linstyle=':'

plt.legend(handles=[l1,l2],labels=['up','down'],loc='best')

plt.show

运行结果:

import matplotlib.pyplot as plt

import numpy as np

n = 1024

X = np.random.normal(0,1,n) # 每一个点的X值

Y = np.random.normal(0,1,n) # 每一个点的Y值

T = np.arctan2(Y,X) # arctan2 返回给定的X和Y值的反正切值

# scatter 画散点图 size = 75 颜色为T 透明度为50% 利用xticks函数来隐藏x坐标轴

plt.scatter(X,Y,s=75,c=T,alpha=0.5)

# plt.scatter(X,Y,s=75,c='r',alpha=0.5) 颜色全部都是red

plt.xlim(-1.5,1.5)

plt.xticks(()) # 忽略xticks

plt.xlim(-1.5,1.5)

plt.yticks(()) # 忽略yticks

plt.show

运行结果:

plt.figure(3)

x_index = np.arange(5)

x_data = ('A','B','C','D','E')

y1_data = (20,35,30,35,27)

y2_data = (25,32,34,20,25)

bar_width = 0.35 # 定义一个数字代表每个独立柱的宽度

rects1 = plt.bar(x_index,y1_data,width=bar_width,alpha=0.4,color='b',label='legend1') # 参数:左偏移、高度、柱宽、透明度、颜色、图例

rects2 = plt.bar(x_index + bar_width, y2_data,width=bar_width,alpha=0.5,color='r',label='legend2')

# 关于左偏移,不用关心每根柱的中心不中心,因为只要把刻度线设置在柱的中间就可以了

plt.xticks(x_index + bar_width/2, x_data) # x轴刻度线

plt.legend()

plt.tight_layout()

plt.show()

运行结果:

import matplotlib.pyplot as plt

import numpy as np

%matplotlib inline

n = 12

X = np.arange(n)

Y1 = (1-X/float(n))*np.random.uniform(0.5,1,n)

Y2 = (1-X/float(n))*np.random.uniform(0.5,1,n)

plt.bar(X,+Y1,facecolor='#9999ff',edgecolor='white') # facecolor为柱子颜色,edgecolor为边框颜色

plt.bar(X,-Y2,facecolor='#ff9999',edgecolor='white')

for x,y in zip(X,Y1): # zip 可以传递两个值

plt.text(x+0.4,y+0.05,'%.2f'%y,ha='center',va='bottom') # ha表示横向对齐,bottom表示向下对齐

for x,y in zip(X,Y2):

plt.text(x+0.4,-y-0.05,'%.2f'%y,ha='center',va='top')

# plt.text(x+0.4,-y-0.05) 会产生一条线,ha='center',ha表示x方向并取在线条的中间,va='top',表示y方向,top表示线在文字的上面

plt.xticks(()) # 忽略xticks

plt.yticks(()) # 忽略yticks

plt.show()

运行结果:

# 图中图

fig=plt.figure()

x=[1,2,3,4,5,6,7]

y=[1,3,4,2,5,8,6]

# 绘制大图:假设大图的大小为10,那么大图被包含在由(1,1)开始,宽8高8的坐标系之中。

left,bottom,width,height = 0.1,0.1,0.8,0.8

ax1 = fig.add_axes([left,bottom,width,height]) # main、axes

ax1.plot(x,y,'r') # 绘制大图,颜色为red

ax1.set_xlabel('x') # 大图横坐标名称x

ax1.set_ylabel('y') # 大图纵坐标名称y

ax1.set_title('title') # 大图名称为title

# 绘制小图,注意坐标系位置和大小的改变

ax2 = fig.add_axes([0.2,0.6,0.25,0.25])

ax2.plot(y,x,'b') # 绘制小图,颜色为blue

ax2.set_xlabel('x') # 小图横坐标名称x

ax2.set_ylabel('y') # 小图横坐标名称y

ax2.set_title('title inside 1') # 小图横坐标名称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')

plt.show()

运行结果:

二、我的自学路线

01 安装Python编辑器 [ 已整理 ]

02 Python编译器快捷键 [ 已整理 ]

03 Python基础 [ 已整理 ]

04 Python难点 [ 已整理 ]

05 Python常用的库 [ 已整理 ]

06 爬虫 [ 看视频ing ]

三、笔记目录

1) Python 编辑器

2) Python 基础

03) Python 难点

04) Python 常用的库

( ……更多笔记,见专栏 )

"♥我的笔记,希望对你有帮助♥"

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值