matplotlib基础

发布时间 2023-08-07 00:29:44作者: Element_yuan

matplotlib基础

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

1、八种内件颜色缩写:

b:blue
g:green
r:red
c:cyan
m:magenta
y:yellow
k:black
w:white

2、title设置

#title设置
plt.title("title")#括号当中输入标题的名称
plt.show()

image

plt.title("标题")#括号当中输入标题的名称
plt.show()
plt.rcParams['font.sans-serif']=['SimHei']

image

2、Figure对象
在matplotlib中,整个图像为一个Figure对象。
在Figure对象中可以包含一个或者多个Axes对象。
每个Axes(ax)对象都是一个拥有自己坐标系统的绘图区域。

plt.figure(figsize=(4,4))
#画布大小
plt.plot(2,1)
plt.plot(1,2)
#x坐标为3,y坐标为9
plt.show()

image

3、坐标轴及标签
将数字设为负数,也可能出现乱码的情况,这时候可以加下面的代码:
plt.rcParams['axes.unicode_minus']=False

plt.xlim(0,6) #x轴坐标轴
plt.ylim(0,3)#y轴坐标轴
plt.xlabel('X')#x轴标签
plt.ylabel('Y')#y轴标签
plt.show()

image

4、设置label和legend

plt.plot(2, 3, label="x")#第一个label
plt.plot(3, 2, label="y")#第二个label
plt.legend(loc='best')#图列位置,可选best,center等
plt.show()

image

5、加注释
有时候我们需要对特定的点进行标注,我们可以使用 plt.annotate 函数来实现:
s: 注释信息内容
xy:箭头点所在的坐标位置
xytext:注释内容的坐标位置
arrowprops:设置指向箭头的参数

#annotate()函数在指定的位置添加了一个标记点和一条箭头。
#xy参数指定了标记点的坐标位置,
# xytext参数指定了箭头指向的文本位置,
# weight参数指定了文本的字体粗细,
# color参数指定了文本的颜色,
# arrowprops参数指定了箭头的样式、颜色等属性。
x=np.linspace(0,10,200)#从0到10之间等距产生200个值
y=np.sin(x)
plt.plot(x,y,linestyle=':',color='b')
plt.annotate(text='标记点', xy=(3, np.sin(3)), xytext=(4, -0.5), weight='bold', color='b', arrowprops=dict(arrowstyle='-|>', color='k'))
plt.show()

image

5 使用子图
如果需要将多张子图展示在一起,可以使用 subplot() 实现。
即在调用 plot()函数之前需要先调用 subplot() 函数。
该函数的第一个参数代表子图的总行数,第二个参数代表子图的总列数,第三个参数代表活跃区域。

ax1 = plt.subplot(2, 2, 1)
plt.plot(x,np.sin(x), 'k')

ax2 = plt.subplot(2, 2, 2, sharey=ax1) # 与 ax1 共享y轴
plt.plot(x, np.cos(x), 'g')

ax3 = plt.subplot(2, 2, 3)
plt.plot(x,x, 'r')

ax4 = plt.subplot(2, 2, 4, sharey=ax3) # 与 ax3 共享y轴
plt.plot(x, 2*x, 'y')

image

matplotlib.pyplot提供了丰富的绘图函数可供选择,包括:scatter(散点图)、bar(条形图)、pie(饼图)、hist(直方图)以及的plot(坐标图)。

#bar柱状图
x = np.arange(8)
y = np.random.randint(1,20,8)
#arange(8)表示从0到7的整数序列。
#randint(1,20,8)表示在1到19之间(包括1和19)随机生成8个不重复的整数
plt.bar(x, y)
plt.show()

image

matplotlib还提供了其它类型的柱状图,如多系列柱状图,堆叠图,水平向的条纹图等。plt.plot()适用于基本图表的绘制,kind可选类型有线形图、柱状图、密度图、堆叠图、面积图等,以横纵坐标两个维度为主。grid是显示网格,colormap是颜色展示,括号中可填颜色参数,如不填则会展示默认颜色。

# 多系列柱状图
df = pd.DataFrame(np.random.rand(10, 3), columns = ['a', 'b', 'c'])
df.plot(kind ='bar', grid = True, colormap = 'summer_r')

image

# 多系列堆叠图
df.plot(kind = 'bar',  grid = True, colormap = 'Blues_r', stacked = True)

image

# 水平向的条形图调用的是barh():
df.plot.barh( grid = True, colormap = 'BuGn_r')

image

scatter散点图
绘制散点图,主要用到plt.scatter()这个函数。
x,y是必填参数;
c(颜色:b--blue, c--cyan,g--green,k--black,m--magenta,r--red,w--white,y--yellow);
s:控制点的大小,默认为20;
marker:指定散点图点的形状,默认为圆形;
alpha:指定对象的透明度;

x = np.random.rand(10)
y = np.random.rand(10)
plt.scatter(x,y)
plt.show()

image

# pie饼图
# matplotlib中饼图的实现用的是pie()函数,必须输入的参数是饼图每个部分的值。
sizes = [2,5,12]
labels = ['娱乐','育儿','饮食']
plt.pie(sizes,labels=labels,autopct='%1.1f%%',shadow=False,startangle=100)
# 使用labels为饼图加标签;
# autopct 控制饼图内百分比设置
# '%1.1f'指小数点前后位数(没有用空格补齐),
# shadow是在饼图下画一个阴影,False即不画
plt.show()

image

直方图hist
直方图绘制为hist()函数,参数如下:
data:必选参数,绘图数据
bins:直方图的长条形数目,可选项,默认为10
normed:是否将得到的直方图向量归一化,可选项,默认为0,代表不归一化,显示频数。normed=1,表示归一化,显示频率。
facecolor:长条形的颜色
edgecolor:长条形边框的颜色
alpha:透明度

s = pd.Series(np.random.randn(1000))
s.hist(bins = 20,histtype = 'bar',align = 'mid',orientation = 'vertical',alpha = 0.5,density = True)

image

boxplot箱型图:
绘制箱线图,用plt.boxplot()这个函数。箱型图是利用数据中的五个统计量:最小值、第一四分位数、中位数、第三四分位数与最大值来描述数据的一种方法。它也可以粗略地看出数据是否具有有对称性,分布的分散程度等信息,特别可以用于对几个样本的比较。

np.random.seed(100)#生成随机数
data=np.random.normal(size=1000,loc=0,scale=1)
plt.boxplot(data,sym='o',whis=1.5)
plt.show()

image

np.random.seed(100)#生成随机数
data=np.random.normal(size=(1000,4),loc=0,scale=1) #1000个值得4维数组
lables = ['A','B','C','D']
plt.boxplot(data,labels=lables)
plt.show()

image

heatmap热图
热图是数据分析的常用方法,通过色差、亮度来展示数据的差异、易于理解。matplotlib中生成热图是调用的函数imshow()。

X = [[1,2],[3,4],[5,6]]
plt.imshow(X)
plt.colorbar()
plt.show()

image

#  四种线型:
plt.plot(y,'-') #实线
plt.plot(y+1,'--')#虚线
plt.plot(y+2,'-.')#点划线
plt.plot(y+3,':')#点线

image

# 点样式
plt.plot(y,'o')
plt.plot(y+1,'D')
plt.plot(y+2,'^')
plt.plot(y+3,'p')

image

# 样式字符串
# 将颜色,点型,线型写成一个字符串,如:gx:,mo--等
plt.plot(y,'gx:')
plt.plot(y+1,'mo--')
plt.plot(y+2,'bp-')

image

# 保存图片
plt.savefig() # 保存