当前位置: 首页 > news >正文

matplot制图方法合集

本随笔是matplot制图的保姆级教程,主要学习自尚硅谷的bilibili视频,欢迎学习

1、折线图 plot

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#设置字体
from matplotlib import rcParams
rcParams['font.family']="Microsoft YaHei"
#创建图表、设置大小
plt.figure(figsize=(8,4))
#设置数据
month=['1月','2月','3月','4月']
sales=[100,120,130,80]
#绘制plot
plt.title("2026sales趋势",fontsize="15")  #标题
plt.plot(month,sales,label="产品A",color="#B72E2EB3",linewidth="2",linestyle="-",marker="o")
#添加坐标轴的标签
plt.xlabel("月份",fontsize=10)
plt.ylabel("销售额(万元)",fontsize=10)
#添加图例
plt.legend(loc="upper left")
#添加网格线
# plt.grid(axis="y")   #(or"x")
plt.grid(alpha=0.5,color="black",linestyle="--")#透明度,颜色,虚线(-实线,--虚线)
#设置刻度字体大小与旋转
plt.xticks(rotation=30,fontsize="12")
plt.yticks(rotation=0,fontsize="12")
#设置y轴范围
plt.ylim(75,145)
#在每个数据点显示数值
for x,y in zip(month,sales):plt.text(x,y+1,str(y),ha="center",va="bottom")
#显示图表
plt.show()

output1

2、柱状图 bar

import matplotlib.pyplot as plt
#设置字体
from matplotlib import rcParams
rcParams['font.family']="Microsoft YaHei"
#创建图表、设置大小
plt.figure(figsize=(8,4))
#设置数据
subject=['语文','数学','英语','科学']
score=[98,90,60,80]
plt.bar(subject,score,label="小明",color="#3960A8",width=0.6)
plt.title("小明的成绩单",fontsize="15")  #标题
plt.xlabel("科目",fontsize="12")
plt.ylabel("分数",fontsize="12")
plt.grid(axis="y",alpha=0.2,color="black",linestyle="--")
plt.xticks(rotation=0,fontsize="12")
plt.yticks(rotation=0,fontsize="12")
plt.ylim(0,105)
for x,y in zip(subject,score):plt.text(x,y+1,str(y),ha="center",va="bottom",fontsize=10)
plt.legend(loc="upper right")
# plt.tight_layout() #这个函数可以自动优化排版,不过效果不明显
plt.show()

output2

3、横向条形图 barh

import matplotlib.pyplot as plt
#设置字体
from matplotlib import rcParams
rcParams['font.family']="Microsoft YaHei"
#创建图表、设置大小
plt.figure(figsize=(8,4))
#设置数据
subject=['语文','数学','英语','科学']
score=[98,90,60,80]
plt.barh(subject,score,label="小明",color="#559068",height=0.5)
plt.title("小明的成绩单",fontsize="15")  #标题
plt.xlabel("分数",fontsize="12")
plt.ylabel("科目",fontsize="12")
plt.grid(axis="x",alpha=0.2,color="black",linestyle="--")
plt.xticks(rotation=0,fontsize="12")
plt.yticks(rotation=0,fontsize="12")
plt.xlim(0,105)
for x,y in zip(score,subject):plt.text(x+2,y,str(x),ha="center",va="bottom",fontsize=15)
plt.legend(loc="upper right")
# plt.tight_layout() 
plt.show()

output3

4、直方图 hist

import matplotlib.pyplot as plt
import numpy as np
from matplotlib import rcParams
rcParams['font.family'] = "Microsoft YaHei"
# 1. 准备数据:模拟1000个学生的成绩(正态分布,平均分70,标准差10)
np.random.seed(42)  # 设置随机种子,保证每次运行结果一样
scores = np.random.normal(loc=70, scale=10, size=1000)
# 2. 绘制直方图
plt.figure(figsize=(8, 4))  # 设置画布大小
n, bins, patches = plt.hist(scores,          # 数据bins=100,         # 分成100个柱子(区间)edgecolor='black', # 柱子边框颜色,让分界更清晰color='#87CEEB',  # 柱子填充颜色alpha=0.7        # 透明度
)
# 3. 添加图表信息
plt.title('班级考试成绩分布直方图', fontsize=14)
plt.xlabel('分数', fontsize=12)
plt.ylabel('学生人数', fontsize=12)
plt.grid(axis='y', linestyle='--', alpha=0.5) # 添加横向网格线
# 4. 显示图表
plt.show()#5.拓展:hist返回值
# print("--- 每个区间的人数 ---")
# print(n)
# print("\n--- 区间边界 ---")
# print(bins.round(2))
# print("\n--- 柱子对象 ---")
# print(patches)

output4

5、饼状图 pie

5.1 饼状图
import matplotlib.pyplot as plt
from matplotlib import rcParams
rcParams['font.family']="Microsoft YaHei"
plt.figure(figsize=(5,6))
#设置数据
apps=['Bilibili','Brawler Stars','Wechat','Douyin','Others']
times=[100,50,28,12,87]
colors1=["#66df66","#d2d521bf","#28aebc","#763e3e","#4628bb"]
#突出块设置
explode=[0.06,0,0,0,0]
plt.pie(times,labels=apps,autopct="%.2f%%",   #显示百分比startangle=-60,     #旋转一定角度colors=colors1,explode=explode,    #突出块shadow=True         #产生立体感阴影),
plt.title("健康使用手机",fontsize="15")
plt.tight_layout()
plt.show()

output5

5.2 圆环图
plt.figure(figsize=(5,6))
plt.pie(times,labels=apps,autopct="%.2f%%",startangle=-60,colors=colors1,wedgeprops={"width":0.66},#制造环状图并调节缺口比例pctdistance=0.8,          #调整中心pct到中心点的距离explode=explode,          #突出块设置shadow=1                  #产生立体感阴影)
plt.title("健康使用手机",fontsize="15")
#用text函数在中心写字
plt.text(0,-0.08,"Sum=100%",ha="center",va="bottom",fontsize=15,color="g")
plt.tight_layout()
plt.show()

output6

6、散点图 scatter

import matplotlib.pyplot as plt
import random as rd
from matplotlib import rcParams
rcParams['font.family']="Microsoft YaHei"
plt.figure(figsize=(8,4))
#设置数据
x=[]
y=[]
for i in range(500):tmp=rd.uniform(0,10)x.append(tmp)y.append(tmp*1.5+rd.gauss(0,0.6))
#绘制scatter
plt.title("Operation datas",fontsize="15")
plt.scatter(x,y,label="产品A",color="#4796A2B3",alpha=0.4,  #样本点透明度s=15        #样本点大小)
plt.xlabel("X变量",fontsize=15)
plt.ylabel("Y变量",fontsize=15)
#添加网格线
# plt.grid(axis="y")   #(or"x")
plt.grid(alpha=0.4,color="black",linestyle="--")#透明度,颜色,虚线(-实线,--虚线)
#设置刻度字体大小与旋转
plt.xticks(rotation=0,fontsize="12")
plt.yticks(rotation=0,fontsize="12")
# plt.ylim(75,145)  #设置y轴范围
#添加一条拟合线(同一个图中画多条线直接加就行)
plt.plot([0,10],[0,15],color="#ed1a0b",linewidth=2,linestyle="--")
# plt.tight_layout()
plt.show()

output7

7、箱线图 boxplot

import matplotlib.pyplot as plt
from matplotlib import rcParams
rcParams['font.family']="Microsoft YaHei"
#创建图表、设置大小
plt.figure(figsize=(8,4))
#设置数据
data={"语文":[82,95,88,70,90,76,78,76,56],"数学":[90,98,79,67,97,95,90,88,86],"英语":[70,72,68,65,78,66,56,90,99]
}
plt.title("各科成绩分布箱线图",fontsize="15")  #标题
plt.boxplot(data.values(),tick_labels=data.keys())
#添加坐标轴的标签
plt.xlabel("学科",fontsize=15)
plt.ylabel("分数",fontsize=15)
#添加网格线
# plt.grid(axis="y")   #(or"x")
plt.grid(alpha=0.4,color="black",linestyle="--")#透明度,颜色,虚线(-实线,--虚线)
#设置刻度字体大小与旋转
plt.xticks(rotation=0,fontsize="12")
plt.yticks(rotation=0,fontsize="12")
# plt.ylim(75,145)  #设置y轴范围
plt.tight_layout()
plt.show()

output8

8、多个图的绘制方法 subplot()

import matplotlib.pyplot as plt
from matplotlib import rcParams
rcParams['font.family']="Microsoft YaHei"
plt.figure(figsize=(6,4))
month=['1月','2月','3月','4月']
sales=[100,120,130,80]
f1=plt.subplot(2,2,1)   #2行2列的第一个格子
f1.plot(month,sales)
f2=plt.subplot(2,2,2)
f2.bar(month,sales)
f3=plt.subplot(2,2,3)
f3.scatter(month,sales)
f4=plt.subplot(2,2,4)     #可以省略逗号
f4.pie(sales,labels=month,autopct="%.2f%%",   #显示百分比startangle=-20,     #旋转一定角度colors=colors1,explode=[0.1,0,0,0],shadow=True         #产生立体感阴影)
plt.show()

output9

9、整合包Seaborn的使用

9.1 直方图

直方图 histplot

计数图 countplot 与之类似 但不能使用kde

import seaborn as sns
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import rcParams
rcParams['font.family']="Microsoft YaHei"
#导入数据
sns.set_palette("Set2")
df1=pd.read_csv("data/sns_data.csv")
df1.head()
EmployeeIDbirthdate_keyagecity_namedepartmentjob_titlegender
013181/3/195461VancouverExecutiveCEOM
113191/3/195758VancouverExecutiveVP StoresF
213201/2/195560VancouverExecutiveLegal CounselF
313211/2/195956VancouverExecutiveVP Human ResourcesM
413221/9/195857VancouverExecutiveVP FinanceM
plt.figure(figsize=(5,3))
sns.histplot(df1,x="department",kde=True);#kde代表核密度分布曲线开关

output10

#横向直方图
plt.figure(figsize=(5,3))
sns.histplot(df1,y="city_name",kde=True);

output11

9.2 散点图
penguins=pd.read_csv("data/penguins.csv")
penguins.head()
speciesislandbill_length_mmbill_depth_mmflipper_length_mmbody_mass_gsex
0AdelieTorgersen39.118.7181.03750.0Male
1AdelieTorgersen39.517.4186.03800.0Female
2AdelieTorgersen40.318.0195.03250.0Female
3AdelieTorgersenNaNNaNNaNNaNNaN
4AdelieTorgersen36.719.3193.03450.0Female
plt.figure(figsize=(5,3))
sns.scatterplot(penguins,x="body_mass_g",y="bill_depth_mm",hue="sex");

output12

9.3 蜂窝图
#通过jointplot()函数,设置kind="hex"来绘制蜂窝图。
sns.jointplot(data=penguins, x="body_mass_g", y="flipper_length_mm", kind="hex");

output13

9.4二维核密度估计图
#通过kdeplot()函数,同时设置x参数和y参数来绘制二维核密度估计图。
plt.figure(figsize=(5,3))
sns.kdeplot(data=penguins, x="body_mass_g", y="flipper_length_mm");

output14

#通过fill=True设置为填充,通过cbar=True设置显示颜色示意条。
plt.figure(figsize=(5,3))
sns.kdeplot(data=penguins, x="body_mass_g", y="flipper_length_mm", fill=True, cbar=True);

output15

9.5 条形图
#条形图
plt.figure(figsize=(5,3))
sns.barplot(data=penguins, x="species", y="bill_length_mm", estimator="mean", errorbar=None);

output16

9.6 箱线图
plt.figure(figsize=(5,3))
sns.boxplot(data=penguins, x="species", y="bill_length_mm");

output17

9.7 小提琴图
plt.figure(figsize=(5,3))
'''小提琴图Violin Plot 是一种结合了箱线图和核密度估计图KDE的可视化图表,
用于展示数据的分布情况、集中趋势、散布情况以及异常值。小提琴图不仅可以显示数据的基本统计量(如中位数和四分位数),
还可以展示数据的概率密度,提供比箱线图更丰富的信息
'''
sns.violinplot(data=penguins, x="species", y="bill_length_mm");

output18

9.8 成对关系图
'''成对关系图是一种用于显示多个变量之间关系的可视化工具。它可以展示各个变量之间的成对关系,
并且通过不同的图表形式帮助我们理解数据中各个变量之间的相互作用。
对角线上的图通常显示每个变量的分布(如直方图或核密度估计图),
帮助观察每个变量的单变量特性。其他位置展示所有变量的两两关系,用散点图表示。
'''
sns.pairplot(data=penguins, hue="species");

output19

http://www.jsqmd.com/news/447474/

相关文章:

  • PostgreSQL性能优化必知:如何正确使用IMMUTABLE、STABLE和VOLATILE函数
  • 石家庄家长速看!揭秘优质发育迟缓康复中心 - 品牌测评鉴赏家
  • 郑州发育迟缓康复机构实测指南|3家优质机构+避坑技巧,家长别再走弯路! - 品牌测评鉴赏家
  • 图像处理避坑指南:为什么你的局部Gamma校正总是产生噪声?
  • 西安自闭症机构大揭秘:为“星星的孩子”照亮前行之路 - 品牌测评鉴赏家
  • QuestaSim覆盖率合并避坑指南:多测试用例数据整合的正确姿势
  • C#实战:5分钟搞定ONNX+SCRFD+ArcFace人脸识别系统(附完整代码)
  • C# OpenXML 实战:5分钟搞定Word文档内容替换(含表格复制与控件填充)
  • 郑州自闭症训练机构实用指南:用专业守护星娃成长之路 - 品牌测评鉴赏家
  • 郑州自闭症康复机构全攻略|家长必看,避坑不踩雷,守护星星的孩子 - 品牌测评鉴赏家
  • 别等代码丢失才后悔!Git fsck命令的7个救命用法与自动化监控方案
  • Windows 10/11 下 Redis 7.2.4 保姆级安装教程(含环境变量配置)
  • Spring Boot微服务通信:从RestTemplate到OpenFeign的实战避坑指南
  • Unity WebGL手机适配全攻略:从配置到发布避坑指南(附免费服务器推荐)
  • 西安自闭症机构全攻略:为“星星的孩子”照亮前行之路 - 品牌测评鉴赏家
  • Chrome自动化测试必备:chrome_options.add_experimental_option()的10个实战技巧
  • 复盘工具V23.0保姆级教程:韭菜异动轮动功能详解与实战应用
  • 6456456
  • UE5安装避坑指南:Epic Games启动程序下载到虚幻引擎配置全流程(附常见问题解决)
  • Cisco路由器接口命名详解:从Se2/0到GigabitEthernet0/1的实战指南
  • Android OTA升级包制作全攻略:从自动生成到手动修改(附常见签名失败解决方案)
  • Python实战:5分钟搞定带Logo的二维码生成(附完整代码)
  • 利用Argoverse-api实现高精地图与轨迹可视化:保姆级教程
  • 从编译到覆盖率:gtest+mockcpp+C++11完整测试流水线搭建指南
  • 从零开始:如何用Robot Framework+Jenkins打造自动化测试流水线
  • X型四旋翼无人机姿态控制详解:从欧拉角到实际飞行(附PID调参技巧)
  • SSL证书有效期缩至47天?手把手教你用Certbot实现自动化续期(含K8s配置)
  • LTspice实战差分放大器:3种典型电路放大倍数对比测试报告
  • 手把手教你用STM32定时器实现稳定数码管显示(附完整代码)
  • C#实战:5分钟教你用Bitmap类生成炫酷HeatMap(附完整源码)