Python学习记录2——matplotlib&numpy

目录

零之前言

一.使用

1.引入库

2.坐标系的属性

①坐标轴

②图形的绘制

③绘制多个图像

二.显示图像

三.搬运一下其他类型的图

1.普通图

2.散点图

3.条形图

4.网格

5.剩下的图


零之前言

matplotlib就如一大堆非常精美的盘子,单用没什么效果,主要是用来呈现出更好的东西(菜品)。工具人流下了心酸的泪

本文主要记录matplotlib的用法,同时涉及辅助的numpy代码。

一.使用

1.引入库

一般是这样导入

import numpy as np
from matplotlib import pyplot as plt 

亦或者把导入全部的pylab。(pylab是matplotlib的一部分)

pylab 是 matplotlib 面向对象绘图库的一个接口。它的语法和 Matlab 十分相近。也就是说,它主要的绘图命令和 Matlab 对应的命令有相似的参数。

from pylab import *

2.坐标系的属性

①坐标轴

一般不设置的话,就是默认的表示。但是,默认的表示方式也是真的很不错!

# 设置横轴的上下限
xlim(-4.0,4.0)
# 设置横轴记号
xticks(np.linspace(-4,4,9,endpoint=True))
# 设置纵轴的上下限
ylim(-1.0,1.0)
# 设置纵轴记号
yticks(np.linspace(-1,1,5,endpoint=True))

这样设置上下限的效果会更好

xlim(X.min()*1.1, X.max()*1.1)
ylim(C.min()*1.1, C.max()*1.1)
#X,C为一个列表

上下限不必解释,而设置记号则是一个列表,如[0,1,2,3],用np.linspace可以很方便的建立一个列表:

numpy.linspace(start, stop[, num=50[, endpoint=True[, retstep=False[, dtype=None]]]]])
start - 起始点,
stop - 结束点
num - 元素个数,默认为50,
endpoint - 是否包含stop数值,默认为True,包含stop值;若为False,则不包含stop值
retstep - 返回值形式,默认为False,返回等差数列组,若为True,则返回结果(array([`samples`, `step`]))
dtype - 返回结果的数据类型,默认无,若无,则参考输入数据类型。

也可以用np.arange()

np.arange([start, ]stop, [step, ]dtype=None)
start:可忽略不写,默认从0开始;起始值
stop:结束值;生成的元素不包括结束值
step:可忽略不写,默认步长为1;步长
dtype:默认为None,设置显示元素的数据类型

坐标轴上的文字说明:

# fontproperties 设置中文显示,fontsize 设置字体大小
plt.xlabel("x 轴", fontproperties=zhfont1)
plt.ylabel("y 轴", fontproperties=zhfont1)

②图形的绘制

可以通过这样来绘制图形

plot(X, S, color="red",  linewidth=2.5, linestyle="-", label="cosine")

亦或者

plot(X,S,"ob") 

其中X,S是我们的X,Y坐标的列表。label是图例名称。对于color和linestyle有其他的参数:

#就是用什么线来连接坐标点
线条风格linestyle或ls         描述

‘-‘                         实线  
‘:’                         虚线   
‘–’                         破折线 
‘None’,’ ‘,’’               什么都不画    
‘-.’                        点划线
坐标点数据的点的样子
标记maker            描述

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

 

颜色
别名             颜色   

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

就像这样:

import numpy as np
from matplotlib import pyplot as plt

x = np.arange(1, 11)
y = 2 * x + 5
plt.plot(x, y, ":or",)
plt.show()

③绘制多个图像

先看样例代码:

import numpy as np 
import matplotlib.pyplot as plt 
# 计算正弦和余弦曲线上的点的 x 和 y 坐标 
x = np.arange(0,  3  * np.pi,  0.1) 
y_sin = np.sin(x) 
y_cos = np.cos(x)  
# 建立 subplot 网格,高为 2,宽为 1  
# 激活第一个 subplot
plt.subplot(2,  1,  1)  
# 绘制第一个图像 
plt.plot(x, y_sin) 
plt.title('Sine')  
# 将第二个 subplot 激活,并绘制第二个图像
plt.subplot(2,  1,  2) 
plt.plot(x, y_cos) 
plt.title('Cosine')  
# 展示图像
plt.show()

subplot布局方式如下

二.显示图像

显示图像基本上一样,只需要这样

plt.imshow(img)
plt.axis('off') #是否开启坐标轴,默认的是开启
plt.title('image')
plt.show()

还支持显示灰度图:

plt.imshow(img,cmap='gray')

三.搬运一下其他类型的图

搬运自:https://liam.page/2014/09/11/matplotlib-tutorial-zh-cn/

1.普通图

from pylab import *

n = 256
X = np.linspace(-np.pi,np.pi,n,endpoint=True)
Y = np.sin(2*X)

plot (X, Y+1, color='blue', alpha=1.00)
plot (X, Y-1, color='blue', alpha=1.00)
show()

2.散点图

from pylab import *

n = 1024
X = np.random.normal(0,1,n)
Y = np.random.normal(0,1,n)

scatter(X,Y)
show()

3.条形图

from pylab import *

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

bar(X, +Y1, facecolor='#9999ff', edgecolor='white')
bar(X, -Y2, facecolor='#ff9999', edgecolor='white')

for x,y in zip(X,Y1):
    text(x+0.4, y+0.05, '%.2f' % y, ha='center', va= 'bottom')

ylim(-1.25,+1.25)
show()

4.网格

from pylab import *

axes = gca()
axes.set_xlim(0,4)
axes.set_ylim(0,3)
axes.set_xticklabels([])
axes.set_yticklabels([])

show()

5.剩下的图

去搬运的原网页看吧


呐,差不多就这样,能满足大部分需求了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

康娜喵

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

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

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

打赏作者

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

抵扣说明:

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

余额充值