matplotlib

时间:2021-09-22
本文章向大家介绍matplotlib,主要包括matplotlib使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

matplotlib 是一个2D绘图库。

  • 折线图: 能够显示数据的变化趋势,反映事物的变化情况(变化)

  • 散点图:判断变量之间是否存在数量关联趋势,展示离群点(分布规律)

  • 柱状图: 绘制离散额数据,比较数据之间的差别(统计/对比)

  • 直方图:绘制连续性的数据,展示一组或多组数据的分布状况(统计)

  • 饼图:分类数据的占比情况(占比)


import matplotlib.pyplot as plt

%matplotlib inline  #在jupyter中显示

plt.show()

折线图

# 对折线进行操作
plt.plot(x,y.color='red',alpha=1,linestyle='-',linewidth=3)
'''
color: 设定颜色,跟单词或16进制的色值
alpha: 设定透明度,0-1. 0:透明。 1:不透明
linestyle: 设定线的形状。 '--' 虚线。 '-' 实线。 '-.' :
linewidth: 设定宽度
'''

# 对折点进行操作
plt.plot(x,y,marker = 'o',markersize =10, markerfacecolor = 'red', markeredgecolor = 'black', markeredgewidth =5)
'''
marker 折点的形状
markersize 折点大小
markerfacecolor 折点颜色
markeredgecolor 折点边缘颜色
markeredgewidth 折点边缘宽度
'''

# 设置图片大小与保存
plt.figure(figsize = (20,8),dpi =80) # 长宽大小为英寸,dpi像素
plt.savefig(./名称.png)  # png为矢量图形,可进行抠图
plt.show()  # 保存应该在show之前


# 构造 x,y轴
x_ticks_label = ["{}:00".format(i) for i in range(min(x),max(x)+1]  #设置x轴标签
plt.xticks(x[::3],x_ticks_lable[::3],rotation = 45)  #rotation 标签旋转角度,[::3]选取显示的刻度



# 修改坐标轴范围
x = np.arrange(-10,11,1)
y = x**2
plt.plot(x,y)
plt.xlim([-5,5])   # .xlim 可修改范围,也可以只修改单边数据 plt.xlim(xmin =-4)
plt.ylim([0,80])

# 坐标轴显示
ax = plt.gca()    # 显示边缘线
ax.spines['right'].set_color('none')  #对相应的边进行修改 

# 设置原点
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))

# 设置中文字体
from matplotlib import font_manager
my_font  = font_manager.FontProperties(fname = '字体路径',size = 10)  # "C:\Windows\Fonts"
plt.title("标题名称",fontproperties = my_font, color = '', size = )


# 一图多线

y1 = [1,22,33,44,55]
y2 = [3,45,67,67,78]
x = range(1,6)

plt.plot(x,y1,label = 'y1',color = '',zorder = 20) # zoeder谁在图层上方
plt.plot(x,y2,label = 'y2',color ='',zorder = 2)
plt.legend(prop = my_font,loc = 'upper right') #图例
plt.grid(alpha = 1) # 绘制网格


# 多个坐标系子图
import numpy as np
x = np.arange(1,100)
fig = plt.figure(figsize=(20,8),dpi = 80) #绘制画布
ax1 =fig.add_subplot(2,2,1)    # 将画布进行分割,将横向分为两部分,将纵向分为两部分
ax1.plot(x,x)
ax2 = fig.add_subplot(2,2,2)
ax2.plot(x,x**2)
ax3 = fig.add_subplot(2,2,3)
ax3.plot(x,np.log(x))
ax4 = fig.add_subplot(2,2,4)
ax1.plot(x,x)

散点图

fig = plt.figure(figsize=(20,8),dpi = 80) #绘制画布
x= range(1,8)
y = [1,2,34,45,6,7,78]
plt.scatter(x,y)    # scatter 绘制散点图

条形图

a= ['a','b','c','d','e']
b= ['33.09','44.88','34.67','56','75']
fig = plt.figure(figsize=(20,8),dpi = 80) #绘制画布

reacts = plt.bar(range(len(a)),[float(i) for i in b, width = 0.3, color['r','g','b']]  # bar 条形图
plt.xticks(range(len(a)),a,fontproperties = my_font)

for react in reacts:             # 在条形图上写上数据的大小
    height = react.get_height()
    plt.text(react.get_x()+react.get_width()/2,height+0.5,str(height),ha='center') # 显示数据大小的“x坐标,y坐标,大小”

# 横向条形图
reacts = plt.barh(range(len(a)),[float(i) for i in b, width = 0.3, color['r','g','b']]  # barh  横向条形图
plt.yticks(range(len(a)),a,fontproperties = my_font)

for react in reacts:             # 在条形图上写上数据的大小
    width = react.get_width()
    plt.text(width,react.gety()+0.15,str(width),va='center') # 显示数据大小的“x坐标,y坐标,大小”

# 并列条形图与罗列条形图
index = np.arange(4)
BJ =[50,55,54,60]
SH = [44,65,42,67]

# 并列条形图
plt.bar(index,BJ,width=0.3)
plt.xticks(index+0.3/2,index) #将zuo'biao刻度放在两柱形中间
plt.bar(index + 0.3,SH,width = 0.3)

# 罗列条形图,堆积条形图
plt.bar(index,BJ,width=0.3)
plt.xticks(index+0.3/2,index) #将zuo'biao刻度放在两柱形中间
plt.bar(index + 0.3,SH,bottom =BJ,width = 0.3)  #设置bottom

直方图

time = [1,2,3,4,5,6,7,8,9,0,9,8,7,6,5,4,3,2,1,3,5,6,7,8,5,3,5,7,8,3,4,5,6,8,5]
fig = plt.figure(figsize=(20,8),dpi = 80) #绘制画布
distance = 2
group_num = int((max(time)-min(time))/distance)

plt.hist(time,bins = group_num) # bins 分组

plt.xticks(range(min(time),max(time))[::2])
plt.grid(linestyle = '--',alpha = 0.5 )

饼图

# 标签
label_list = ['第一部分','第二部分','第三部分']
# 数据
size = [55,35,10]
# 突出显示
explode = [0,0.05,0]
# 颜色
color = ['r','g','b']
fig = plt.figure(figsize=(20,8),dpi = 80) #绘制画布
pathes,l_text,p_text = plt.pie(size,explode = explode,colors = color,label = label_list,labeldistance =1.1,autopct='%1.1f%%',shadow =False)  # 对饼状图的数据进行接收

'''
size 大小,数据
explode : ~~是否显示突出
colors :颜色
labels:标签
labeldistance 标签距离圆心位置
autopct: 数据显示形式
shadow : 阴影
pathes: 扇形列表
l_text: 标签列表
p_text: 扇形百分比列表

'''
for t in l_text:     
    t.set_fontproperties(my_font)
for i in p_text:
    i.set_size(17)
for j in pathes:
    j.set_color('pink')
    break



原文地址:https://www.cnblogs.com/The-dancing-salted-fish/p/15320960.html