matplotlib、seaborn各类图形实现备查笔记

本文详细记录了使用matplotlib和seaborn进行数据可视化的步骤,包括设置图形显示、绘制折线图、饼图、柱状图、直方图、散点图等,以及如何添加参考线、绘制箱线图和热力图,涵盖了多种图表类型和数据分析场景。
摘要由CSDN通过智能技术生成
  1. 导入matplotlib 、numpy,在jupyter_notebook中设置图形显示,设置中文显示,设置减号显示
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
  1. 折线图
x = np.linspace(0,100,1000)  # 构建x轴数据,0到100,一共1000个数
y = np.sin(x)  # 构建y轴数据
# c折线颜色,lw线宽,ls线型,marker每个点的样式,label图例名称
plt.plot(x,y,c='red',lw=2,ls='-',marker='',label='y = sin(x)')
plt.legend(loc='center')  # 图例显示位置
plt.show()  # 显示图形

在这里插入图片描述

  1. 折线图2
# 画布
x = np.arange(0,1,0.01)  # 构建x轴数据,0到1,每0.01构建一个数
y = x**2  # 构建y轴数据
# 设置画布大小,分辨率,画布颜色
plt.figure(figsize=(6.4,4.84),dpi=100,facecolor='white') 
# 图像名称
plt.title('这是一幅图')
# x轴标题
plt.xlabel('这是x轴')
# y轴标题
plt.ylabel('这是y轴')
# 设置x,y轴范围
plt.xlim([0,1])
plt.ylim([0,1])
# x,y轴刻度设置,最小0,最大1.2,间距0.2
plt.xticks(np.arange(0,1.2,0.2))
plt.yticks(np.arange(0,1.2,0.2))
# 画图,label图例
plt.plot(x,y,label='y = x^2') 
plt.legend(loc='best') # 图例位置
# 先保存图片
plt.savefig('./y等于x的平方.png')
# 后显示图片
plt.show()

在这里插入图片描述
4.链接数据库获取学生成绩数据

from sqlalchemy import create_engine  # 导入包
# 设置链接参数
conn = create_engine("mysql+pymysql://root:password@url:port/database?charset=utf8")
# 使用pandas执行sql查询语句,查询score表中全部数据
score = pd.read_sql("SELECT * FROM score",conn)
# 删除degree为空的数据
score.dropna(subset=['degree'],inplace=True)
# 计算每个班级的学生人数,作为x轴数据
x_data = score.groupby(by='cno')['sno'].count()
# 获得班级名称,作为y轴数据
y_data = score[~score.duplicated(subset=['cno'],keep = 'last')]['cno'].values

5.绘制各班级人数饼图

explode=[0,0.1,0,0.2]  # 设置每个扇形弹出的距离
colors = ['red','yellow','blue','green']  # 设置每个扇形颜色
# 绘制饼图,labels是班级名称,atuopct是百分比显示格式,pctdistance显示距离,labeldistance标签显示距离,startangle开始绘图的角度位置
plt.pie(x = x_data,explode=explode,labels=y_data,colors=colors,\       autopct='%1.1f%%',pctdistance=0.5,labeldistance=1.1,startangle=120)
# 图片名称,pad显示距离
plt.title('班级人数分布饼图',pad=30)
# 绘图
plt.show()

在这里插入图片描述
6.班级人数柱状图

# 条形图,每个班级人数统计
plt.bar(y_data,x_data)
plt.xlabel('班级')
plt.ylabel('人数')
plt.title('班级人数统计')
plt.show()

在这里插入图片描述
7.班级人数直方图

# 直方图
plt.hist(x = y_data,bins=8)

在这里插入图片描述
8.班级人数散点图

# 散点图
plt.scatter(y_data,x_data)

在这里插入图片描述
9.折线图添加参考线和参考区域

plt.plot(y_data,x_data,label='sdfsdf')
plt.legend(loc='best',fontsize=18,frameon=True)  #  图例
# 返回一个图像对象
# fig = plt.gcf()
plt.gcf().set_size_inches(5,3)  # 改变图像大小
plt.grid(ls='--',c = 'grey')  # 绘制网格线
plt.axhline(y = 5,c = 'red',ls='--',lw=1)  #  绘制水平参考线
plt.axvline(x = 2,c = 'red',ls='--',lw=1)  #  绘制垂直参考线
plt.axvspan(xmin=1,xmax=2,facecolor='blue',alpha=0.3) # 绘制水平参考区域
plt.axhspan(ymin=3,ymax=8,facecolor='blue',alpha=0.3) # 绘制水平参考区域

在这里插入图片描述
10.获取每个班级男生和女生数量生成堆叠柱状图

# 堆叠图
students = pd.read_sql("SELECT * FROM student",conn)
boy = students[students['ssex']=='男'].groupby(by='class')['sno'].count()
girl = students[students['ssex']=='女'].groupby(by='class')['sno'].count()
# 绝对数量堆叠图
plt.bar(boy.index, boy, width=0.4, label= '男生')
plt.bar(girl.index, girl, width=0.4, bottom=boy,label= '女生')
plt.legend(loc='best',  shadow=True)
plt.show()

在这里插入图片描述
11.接上例,百分比堆叠柱图

# 百分比堆叠图
summ = boy+girl
percent1 = boy/summ
percent2 = girl/summ
plt.bar(boy.index, percent1, width=0.4, label= '男生')
plt.bar(girl.index, percent2, width=0.4, bottom=percent1,label= '女生'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值