文章目录
如果因为参数缺少说明或代码注释不到位导致理解困难的话非常抱歉~推荐一个视频教程,有很多笔记源于上面的教程,有不清楚的地方也可以去上面的教程看一看~
一.设置颜色和样式
- 八种内建颜色缩写
b: blue
g: green
r: red
c: cyan(青色,介于绿色和蓝色之间)
m: magenta(洋红色,介于红色和紫色之间)
y: yellow
k: black
w: white- html十六进制表示颜色
- rgb元组
- 灰色阴影表示
import numpy as np
from matplotlib import pyplot as plt
y=np.arange(1,5)
plt.plot(y,color='m')
plt.plot(y+1,color='#CFA02F')
plt.plot(y+2,color=(0.2,0.4,0.5))
plt.plot(y+3,color='0.8') # 0.8代表灰色的深度
plt.show()
1.线型
符号 | 含义 |
---|---|
- | 实线 |
-- | 短线 |
-. | 短点相间线 |
: | 虚点线 |
import numpy as np
from matplotlib import pyplot as plt
y=np.arange(1,5)
plt.plot(y,'-')
plt.plot(y+1,'--')
plt.plot(y+1.5,'-.')
plt.plot(y+2,':')
plt.show()
2.标记风格
符号 | 含义 |
---|---|
. | Point |
, | Pixel |
o | Circle |
v | Triangle down (倒三角) |
^ | Triangle up |
< | Triangle left |
> | Triangle right |
1 | Tripod down |
2 | Tripod up |
3 | Tripod left |
4 | Tripod right |
s | Square |
p | Pentagon (五边形) |
* | Star |
h | Hexagon (六边形) |
H | Rotated hexagon |
D | Diamond |
d | Thin diamond |
Vertical line | |
_ | Horizontal line (下划线) |
+ | Plus |
x | Cross (x) |
import numpy as np
from matplotlib import pyplot as plt
y=np.arange(1,5)
#因为参数的取值是唯一的,所以不用明确写出marker='3'(标记风格)
#但是明确写出marker='3'的话,它会帮你把线也给画出来,而不只是描点
plt.plot(y,'3')
plt.plot(y+1,'D')
plt.plot(y+1.5,'h')
plt.plot(y+2,'2')
plt.show()
3.样式字符串
可以把颜色,点型,线型写出一个字符串(顺序没关系,因为参数的取值是唯一的)
比如'co--'代表青色+圆形+虚线
'+y'代表加号+黄色
二.画散点图
import numpy as np
from matplotlib import pyplot as plt
X=np.random.randint(10,10000,1000)
Y=np.random.randint(10,10000,1000)
plt.scatter(X,Y,s=20,c='r',alpha=0.5) #散点图,s是点的大小(面积),默认是20,c是颜色,alpha是透明度
plt.show()
三.画函数图像
import numpy as np
from matplotlib import pyplot as plt
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\simhei.ttf", size=14)
x = np.arange(1, 11,)
y = -2 * x + 5
plt.title("Matplotlib demo")
plt.xlabel("x轴",FontProperties=font)
plt.ylabel("y axis caption",FontProperties=font)
plt.plot(x, y,'go--',linewidth=2)# g代表绿色,o代表点的形状,--代表线的形状
plt.show()
import numpy as np
from matplotlib import pyplot as plt
from matplotlib.font_manager import FontProperties
#设置字体
font = FontProperties(fname=r"c:\windows\fonts\simhei.ttf", size=14)
x = np.arange(0,4*np.pi,.1)
y = np.sin(x)
plt.title("Sin Wave Form")
plt.xlabel("x轴",FontProperties=font)
plt.ylabel("y轴",FontProperties=font)
plt.plot(x, y,'go--',linewidth=2)
plt.show()
import numpy as np
import matplotlib.pyplot as plt
# 计算正弦和余弦曲线上的点的 x 和 y 坐标
x = np.arange(-np.pi, 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()
四.画折线图
import numpy as np
from matplotlib import pyplot as plt
from datetime import datetime
from matplotlib import dates
import time
def convert_to_tic(s):
return time.mktime(datetime.strptime(s.decode('ascii'), "%Y-%m-%d").timetuple())
'''
numpy.loadtxt()参数:
skiprows跳过的行数,比如为2时跳过前2行
usecols是指明使用哪几列数据
converters:该参数是将某一列的数据进行函数预处理再获取,格式为:{列号:函数},可以看成一个字典形式,对列上的所有数据进行函数处理
unpack:选择是否将数据向量输出,默认是False,即将数据逐行输出,当设置为True时,数据将逐列输出。
'''
date,open,close=np.loadtxt('data.csv',delimiter=',',converters={0:convert_to_tic},
skiprows=1,usecols=(0,1,3),unpack=True)
#data.csv是股票数据,可以百度获取。
'''
设置日期显示格式
'''
date = [datetime.fromtimestamp(element) for element in date]
time_formatter = dates.DateFormatter("%Y-%m-%d")
plt.axes().xaxis.set_major_formatter(time_formatter)
plt.plot(date,open,'m<-')
#plt.plot_date(date,open)
plt.show()
五.画条形图
绘制竖直条形图
import numpy as np
from matplotlib import pyplot as plt
N=5
y=[20,10,30,25,15]
index=np.arange(N)
'''
left为x轴的位置序列(index)
height为y轴的数值序列,也就是柱形图的高度(y)
width为柱形图的宽度
'''
plt.bar(index,y,color='red',width=0.5)
plt.show()
绘制水平条形图
import numpy as np
from matplotlib import pyplot as plt
N=5
y=[20,10,30,25,15]
index=np.arange(N)
plt.barh(index,y,color='green',height=0.8)
plt.show()
多个条形图
import numpy as np
from matplotlib import pyplot as plt
N=5
y=[20,10,30,25,15]
y2=[14,30,22,18,25]
index=np.arange(N)
'''
left为x轴的位置序列(index)
height为y轴的数值序列,也就是柱形图的高度(y)
width为柱形图的宽度
'''
plt.bar(index,y,color='red',width=0.3)
plt.bar(index+0.3,y2,color='yellow',width=0.3)
plt.show()
层叠图
import numpy as np
from matplotlib import pyplot as plt
N=5
y=[20,10,30,25,15]
y2=[14,30,22,18,25]
index=np.arange(N)
'''
left为x轴的位置序列(index)
height为y轴的数值序列,也就是柱形图的高度(y)
width为柱形图的宽度
'''
plt.bar(index,y,color='red',width=0.3)
plt.bar(index,y2,color='yellow',width=0.3,bottom=y)
plt.show()
六.画直方图
单变量直方图(用高度表示频率大小)
import numpy as np
from matplotlib import pyplot as plt
average=100
devation=20
X=average+devation*np.random.randn(1000) #在服从标准正态分布的数据中取1000个随机数
'''
画直方图函数的参数:
bins:长方形的数目
normed :为True是频率图,False是频数图,默认为False
'''
plt.hist(X,bins=10,color='red',normed=True)
plt.show()
双变量直方图(用颜色深浅表示频率大小)
import numpy as np
from matplotlib import pyplot as plt
x=np.random.randn(1000)+2
y=np.random.randn(1000)+5
plt.hist2d(x,y,bins=30)
plt.show()
七.画饼状图
import matplotlib.pyplot as plt
label=['A','B','C','D'] #标签
fracs=[15,30,45,10] #比例
plt.axes(aspect=1)
explode=[0,0.05,0.08,0] #可以理解为扇形圆心到整个圆的圆心之间的距离
plt.pie(x=fracs,labels=label,autopct='%.0f%%',explode=explode,shadow=True)
#autopct确定输出格式 ,%%表示一个'%'
plt.show()
八.画箱型图
(箱型图能显示出一组数据的最大值、最小值、中位数、及上下四分位数。)
------------------------------------------------------------
import matplotlib.pyplot as plt
import numpy as np
labels=['A','B','C','D','E']
np.random.seed(1)
data=np.random.normal(size=(1000,5)) #默认随机数服从正态分布(loc=0,scale=1)
'''
sym 调整好异常值的点的形状
whis 默认是1.5, 通过调整数值来设置异常值显示的数量,
如果想显示尽可能多的异常值,whis设置很小,否则很大
'''
plt.boxplot(data,labels=labels,sym='o',whis=1.25)
plt.show()
九.Reference
- 箱型图
(维基百科)
-视频教程 :https://b23.tv/av6989413/p7