5 数据分析——matplotlib

文章目录

    • 基本绘图
    • Matplotlib 多图布局
      • 均匀分布
        • 子图 subplot
        • subplots
      • 图例
      • 线条属性
      • 坐标轴刻度
      • 设置坐标轴范围
      • 标题和网格
      • 标签
      • 文本
      • 注释
      • 保存图片
    • matplotlib 常用视图
      • 折线图
      • 柱形图/条形图
        • 簇状柱形图
        • 堆叠柱状图
        • 条形图
      • 直方图
      • 箱形图
      • 散点图
      • 饼图
      • 面积图
      • 热力图
      • 极坐标图
      • 雷达图
    • 等高线图

导包

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

运行时需要配置参数
rcParams:runtime configuration Parameters

如果浏览器不显示图片,就需要加上这句话
%matplotlib inline

让图片显示中文
plt.rcParams[‘font.sans-serif’] = ‘SimHei’

让图片中可以显示负号
plt.rcParams[‘axes.unicode_minus’] =False

支持矢量图
%config Inlinebackend.figure_format = ‘svg’

查看自己电脑中的字体

from matplotlib.font_manager import FontManagerfm = FontManager()
my_fonts = set(f.name for f in fm.ttflist)
my_fonts

基本绘图

颜色: color = ‘b’,‘g’,‘r’,‘c’,‘m’,‘y’,‘k’,‘w’
样式line style:ls = ‘-’,‘–’,‘-.’ ,‘:’,逗号’,’ ,‘o’,‘^’,‘<’,‘>’,‘s’,‘+’
‘b–’ 蓝色虚线

# 基本绘图
x= np.linspace(-5,5,50)   # 把-5,5 之间分成50份
y = x**2
# 画布配置
# figsize 画布大小,宽高.dpi:分辨率,像素密度
# facecolor:北京颜色
plt.figure(figsize=(5,3),dpi=200,facecolor='r')# 设置网格
plt.grid()
# 折线图
plt.plot(x,y,color='r')

show()的用法

# 在一个画布上绘制多张图
x = np.linspace(0,8)
plt.plot(x,np.sin(x))
plt.show()# 立刻显示完上面的一个 重新显示下面的一个绘图
plt.plot(x,np.cos(x),'go')

Matplotlib 多图布局

均匀分布

子图 subplot
fig = plt.figure(figsize=(6,4))   # 画布配置x = np.linspace(-np.pi,np.pi,30)
y = np.sin(x)ax1 = plt.subplot(221)   # 表示两行两列中的第一个图
ax1.plot(x,y)
ax1.set_title('子图1')ax2 = plt.subplot(222)   # 表示两行两列中的第2个图
ax2.plot(x,y)
ax2.set_title('子图2')ax3 = plt.subplot(2,2,3)   # 表示两行两列中的第3个图
ax3.plot(x,y)
ax3.set_title('子图3')ax4 = plt.subplot(2,2,4)   # 表示两行两列中的第4个图
ax4.plot(x,y)
ax4.set_title('子图4')#自动调整布局
fig.tight_layout()   
fig = plt.figure(figsize=(6,4))   # 画布配置x = np.linspace(-np.pi,np.pi,30)
y = np.sin(x)ax1 = plt.subplot(221)   # 表示两行两列中的第一个图
ax1.plot(x,y)ax2 = plt.subplot(222)   # 表示两行两列中的第2个图
ax2.plot(x,y)ax3 = plt.subplot(2,1,2)   # 表示两行一列中的第二行
ax3.plot(x,np.sin(x*x))
subplots
# 设置成3行3列的图 
fig,ax = plt.subplots(3,3)
ax1,ax2,ax3=ax
ax11,ax12,ax13 =ax1
ax21,ax22,ax23 =ax2
ax31,ax32,ax33 = ax3# fig设置画布的大小
fig.set_figwidth(8)
fig.set_figheight(8)# 画图
ax11.plot(x,np.sinh(x))
ax12.plot(x,np.cosh(x))
ax13.plot(x,np.tanh(x))ax21.plot(x,np.sin(x))
ax22.plot(x,np.cos(x))
ax23.plot(x,np.tan(x))ax31.plot(x,np.tan(x))
ax32.plot(x,np.power(x,2))
ax33.plot(x,np.square(x))# 如果图形有一些重叠
plt.tight_layout()

图形嵌套

fig = plt.figure(figsize=(8,5))#子图1
axes1 = fig.add_subplot(1,1,1)
axes1.plot([0,1],[1,3])# 嵌套一个图 方法一
axes2 = fig.add_subplot(2,2,1,facecolor ='pink')
axes2.plot([0,1],[1,3])# 嵌套图 方法二
# left,bottom,width,height
axes3=plt.axes([0.5,0.5,0.4,0.38])
axes3.plot(x,x*x)# 嵌套图 方法三
axes4 = fig.add_axes([0.12,0.11,0.38,0.38])
axes4.plot(x,x*x*x)

共享轴域

# 图1
axes1 = plt.gca()   #得到当前轴域
axes1.plot(x,np.exp(x),c='r')
axes1.set_xlabel('时间')        #x轴标签
axes1.set_ylabel('exp',c='r')
axes1.tick_params(axis='y',labelcolor='r')   # y轴刻度# 图2
axes2 = axes1.twinx()   #表示和图一共享x轴
axes2.plot(x,np.power(x,2),'g-.')
axes2.set_ylabel('x^2')
axes2.tick_params(axis='y',labelcolor='g')

图例

plt.legend() #需要在plot中添加label='name’才可以将图例的信息显示出来
plt.legend([‘sin’,‘cos’]) # 不需要再plot中添加任何信息,中括号,第一条线的名字,第二条线的名字等等,,

plt.legend(['sin','cos'],fontsize = 18,loc='center',ncol =2, #显示成两列,默认为一列#图例的具体位置[x,y,width,height]bbox_to_anchor = [0,1,1,0.2] )

线条属性

color: 颜色
linestyle:样式
linewidth:线条宽度
alphs:线的透明度,[0,1]
marker:标记
markersize:标记大小
mfc: marker face color标记背景颜色
markeredgecolor: 标记的边缘颜色

# 图例
plt.plot(x,np.sin(x),c='r',marker='p',linestyle=':',linewidth='3',label='sin',mfc='k')
#plt.legend()plt.plot(x,np.cos(x),c='pink',marker='.',linestyle=':',linewidth='5',label='cos',mfc='m')
plt.legend()

坐标轴刻度

xticks
yticks

plt.xticks(ticks = np.arange(0,11,1),fontsize=20,color='red')
plt.yticks([-1,0,1]    #刻度值,刻度大小labels=['min','0','max'],ha='right'   # y轴的水平对齐方式)

设置坐标轴范围

plt.xlim(-5,8)
plt.ylim(-2,2)

plt.axis([-5,8,-2,2])

option: off不显示坐标轴,equal:让x轴和y轴 刻度距离相同 scaled:自动缩放 tight:紧凑型自动适配图片square:让图的大小类似于正方形的大小
plt.axis(‘scaled’) #不显示坐标轴

标题和网格

title
grid

plt.title('sin',fontsize=20,loc='center')
plt.suptitle('--20240318父标题', y=0.3, #设置位置fontsize=18)
# 网格线
plt.grid()
plt.grid(ls='--',lw=0.5,c='gray', axis='y')  #只显示y轴的

标签

plt.xlabel('y=sin(x)',fontsize=18,rotation=45)
plt.ylabel('y=sin(x)',rotation=0,horizontalalignment='right')   # rotation 默认为90

文本

plt.text(0,0.25,'hello')for a,b in zip(x,np.sin(x)):plt.text(a,b+0.3,s=np.round(b,2), #文本内容fontsize=10,color='k',ha='left',    #水平居中va='center'   #垂直居中)

注释

annotate

plt.annotate(
text='最大值',xy=(2,1),   #标注的坐标点,箭头指向的位置xytext=(2,0.25),   #标注内容的位置#箭头样式arrowprops={'width':3,  # 箭头线的宽度'headwidth':8, #箭头头部的宽度'facecolor':'blue'   #箭头的背景颜色}
)

保存图片

savefig 存储画布

plt.savefig(fname='sin.png',#支持png,jpg等dpi=200,facecolor='yellow',pad_inches = 1   # 最边上与图片的距离)

matplotlib 常用视图

折线图

plt.plot()

柱形图/条形图

plt.bar(data.月份,data.语文)

plt.figure(figsize=(5,3))
plt.title('年度销售额')
plt.xlabel('年份')
plt.ylabel('销售额')plt.bar(x,y,width=0.9)for a,b in zip(x,y):plt.text(x=a,y=b,s='{:.1f}万'.format(b/10000),ha='center',fontsize=9)
簇状柱形图
x=bf2.年份
y1,y2,y3=bf2.北区,bf2.中区,bf2.南区
w=0.2
plt.bar(x-w,y1,width=w)
plt.bar(x,y2,width=w)
plt.bar(x+w,y3,width=w)
堆叠柱状图
plt.bar(x,y1,)
plt.bar(x,y2,bottom=y1)
plt.bar(x,y3,bottom=y1+y2)
条形图

plt.barh()

直方图

plt.hist()

# bins:分组
#plt.hist(x,bins=5)
# 左闭右开
plt.hist(x,bins=[0,3,6,9,10])
plt.xticks(range(10))
plt.show()

箱形图

plt.boxplot()
空心点:异常值
上界,上四分位3/4,中位数2/4,下四分位1/4,下界
四分位距:3/4的值-1/4的值
如果a>四分位距*1.5 这为异常值

# 箱形图
x=[1,2,3,4,5,6,20]
plt.boxplot(x)
plt.show()# 一次画多个箱形图
x1 = np.random.randint(10,100,100)
x2 = np.random.randint(30,100,100)
x3 = np.random.randint(60,100,100)
plt.boxplot([x1,x2,x3])#
data=np.random.normal(size=(500,4))
labels=list('ABCD')plt.boxplot(data,labels=labels,notch=True, # 箱型图样式sym='r*'  # 异常值的颜色和形状)
plt.show()

散点图

plt.scatter(x,y)
plt.hexbin(x,y)

# 气泡图
plt.figure(figsize=(5,3))
data = np.random.randn(100,2)
s=np.random.randint(50,200,size=100)   #控制点的大小
c=np.random.randn(100)       # 控制点的颜色
plt.scatter(data[:,0],data[:,1],s=s,c=c,alpha=0.6)# 六边形
plt.hexbin(x,y,gridsize=20,cmap='rainbow')

饼图

x=[10,20,30,40]
plt.pie(x,autopct='%.0f')    #不保留小数
#plt.pie(x,autopct='%.2f%%')   #保留2位小数并显示%
plt.show()
plt.figure(figsize=(4,4))
plt.pie(df.销量,autopct='%.1f%%',pctdistance =0.8, # 百分比文字距离圆心的位置labels=citys,  #标签labeldistance=1.3,#shadow=True    #阴影textprops={'fontsize':12,'color':'yellow'},  # 文字样式# 呈现分类效果explode=[0,0,0,0,0.6,0,0,0,0,0])

甜甜圈

plt.figure(figsize=(4,4))
plt.pie(df.销量,autopct='%.1f%%',pctdistance =0.8, # 百分比文字距离圆心的位置labels=cap,  #标签textprops={'fontsize':9,'color':'black'},  # 文字样式# 甜甜圈,width控制中间小圆的大小,edgecolor控制各个圆环之间的颜色wedgeprops={'width':0.4,'edgecolor':'w'})

多个圈

plt.figure(figsize=(6,6))
plt.pie(values1,autopct='%.1f%%',pctdistance =0.8, # 百分比文字距离圆心的位置labels=cap,  #标签textprops={'fontsize':9,'color':'black'},  # 文字样式# 甜甜圈,width控制中间小圆的大小,edgecolor控制各个圆环之间的颜色#wedgeprops={'width':0.4,'edgecolor':'w'})# 第二个图
plt.pie(
x=values2,autopct='%.1f%%',pctdistance=0.8,textprops={'fontsize':9},#半径radius=0.6
)
plt.legend()

面积图

plt.stackplot(x,y)

plt.stackplot(x,y)
plt.plot(x,y)
plt.show()

热力图

plt.figure(figsize=(14,10))
#热力图
plt.imshow(data,cmap='Blues')
#修改刻度
plt.xticks(range(len(x)),x)
plt.yticks(range(len(y)),y)# 显示数值
for i in range(len(x)):for j in range(len(y)):plt.text(x=i,y=j,s=data[j,i],ha='center',va='center',fontsize=10)
plt.colorbar()   # 显示颜色条

极坐标图

N=8x=np.linspace(0,2*np.pi,N,endpoint=False)
height=np.random.randint(3,15,size=N)
color = np.random.rand(8,3)# 画图
#polar:极坐标
axes=plt.subplot(111,projection='polar')
axes.bar(x=x,height=height,width=2*np.pi/N,bottom=0,color=color)

雷达图

至少要三个点

N=8x=np.linspace(0,2*np.pi,N,endpoint=False)
y=np.sin(x)#有些图形没有闭合,需要手动闭合
x=np.concatenate((x,[x[0]]))
y=np.concatenate((y,[y[0]]))axes=plt.subplot(111,polar=True)
axes.plot(x,y,'o-',lw=2)
axes.fill(x,y,alpha=0.3)# 显示刻度
axes.set_rgrids([0.2,0.4,0.6,0.8],fontsize=12)

等高线图

x=np.linspace(-5,5,100)
y=np.linspace(-5,5,100)X,Y = np.meshgrid(x,y)
Z=np.sqrt(X**2+Y**2)
# 画等高线
cp = plt.contourf(X,Y,Z)
plt.colorbar(cp)
plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/754255.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C语言】猜数字游戏

代码如下&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h> #include <time.h> void game() {int r rand() % 100 1;int guess 0;while (1){printf("请猜数字>:");scanf("%d", &guess…

【神经网络 基本知识整理】(激活函数) (梯度+梯度下降+梯度消失+梯度爆炸)

神经网络 基本知识整理 激活函数sigmoidtanhsoftmaxRelu 梯度梯度的物理含义梯度下降梯度消失and梯度爆炸 激活函数 我们知道神经网络中前一层与后面一层的连接可以用y wx b表示&#xff0c;这其实就是一个线性表达&#xff0c;即便模型有无数的隐藏层&#xff0c;简化后依旧…

R语言基础 - 饼图piechart

R语言基础绘图 —— 饼图piechart 数据准备 这里展示变异注释类型所占百分比&#xff1a; filename <- "data/Count_by_effects.csv"df <- read.csv(filename)# 去除百分比符号&#xff0c;并转换为数值df$Percent <- as.numeric(gsub("%", "…

ubuntu - 安装cmake

编译时提示 CMake Error at CMakeLists.txt:24 (cmake_minimum_required): CMake 3.22 or higher is required. You are running version 3.10.2 -- Configuring incomplete, errors occurred! 大概意思就是编译使用cmake的最低版本是 3.22&#xff0c;我自己的是3.10.2。…

【目标检测】YOLOv2 网络结构(darknet-19 作为 backbone)

上一篇文章主要是写了一些 YOLOv1 的原版网络结构&#xff0c;这篇文章一样&#xff0c;目标是还原论文中原版的 YOLOv2 的网络结构&#xff0c;而不是后续各种魔改的版本。 YOLOv2 和 YOLOv1 不一样&#xff0c;开始使用 Darknet-19 来作为 backbone 了。论文中给出了 Darkne…

springboot280基于WEB的旅游推荐系统设计与实现

旅游推荐系统设计与实现 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装旅游推荐系统软件来发挥其高效地信息处理…

5-隐藏层:神经网络为什么working

声明 本文章基于哔哩哔哩付费课程《小白也能听懂的人工智能原理》。仅供学习记录、分享&#xff0c;严禁他用&#xff01;&#xff01;如有侵权&#xff0c;请联系删除 目录 一、知识引入 &#xff08;一&#xff09;隐藏层 &#xff08;二&#xff09;泛化 &#xff08;三…

深入理解浏览器的页面渲染机制

在当今的网络技术日益发展的背景下&#xff0c;网页变得越来越复杂和动态。作为开发者&#xff0c;理解浏览器如何渲染页面对于优化性能、提升用户体验至关重要。本文将深入探讨浏览器的页面渲染过程&#xff0c;包括重排&#xff08;Reflow&#xff09;和重绘&#xff08;Repa…

【Spring Cloud】SpringCloud接入SOFARegistry

背景 由于项目开发使用的是SpringCloud&#xff0c;但是甲方使用的是阿里云提供的私有云注册中心&#xff0c;需要替换注册中心。 方案 官方文档&#xff1a;Spring Cloud 使用 SOFARegistry 改造的步骤&#xff1a; 1.去掉原项目中注册中心的pom依赖引入&#xff0c;我们使…

java算法题每日多道

274. H 指数 题目 给你一个整数数组 citations &#xff0c;其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。 根据维基百科上 h 指数的定义&#xff1a;h 代表“高引用次数” &#xff0c;一名科研人员的 h 指数 是指他&#xff08;…

鸿蒙Harmony应用开发—ArkTS声明式开发(绘制组件:Ellipse)

椭圆绘制组件。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 无 接口 Ellipse(options?: {width?: string | number, height?: string | number}) 从API version 9开始&#xff0…

数据结构知识Day1

数据结构是什么&#xff1f; 数据结构是计算机存储、组织数据的方式&#xff0c;它涉及相互之间存在一种或多种特定关系的数据元素的集合。数据结构反映了数据的内部构成&#xff0c;即数据由哪些成分数据构成&#xff0c;以何种方式构成&#xff0c;以及呈现何种结构。这种结…

谷歌发布Bard AI以与ChatGPT/GPT-4竞争

Google发布Bard AI&#xff0c;与ChatGPT/GPT-4竞争 概述 谷歌近日推出了一款名为Bard的创新型AI聊天机器人&#xff0c;旨在与OpenAI的ChatGPT和微软的Bing Chat竞争。与同类产品不同&#xff0c;Bard能够直接从其模型中生成信息&#xff0c;而不是检索搜索结果。Bard被视为…

LeetCode讲解算法1-排序算法(Python版)

文章目录 一、引言问题提出 二、排序算法1.选择排序&#xff08;Selection Sort&#xff09;2.冒泡排序3.插入排序&#xff08;Insertion Sort&#xff09;4.希尔排序&#xff08;Shell Sort&#xff09;5.归并排序&#xff08;Merge Sort&#xff09;6.快速排序&#xff08;Qu…

【Node.js从基础到高级运用】十三、NodeJS中间件高级应用

在现代web开发中&#xff0c;Node.js因其高效和灵活性而备受青睐。其中&#xff0c;中间件的概念是构建高效Node.js应用的关键。在这篇博客文章中&#xff0c;我们将深入探讨Node.js中间件的高级应用&#xff0c;包括创建自定义中间件、使用第三方中间件等。我们将从基础讲起&a…

AJAX-原理XMLHttpRequest

定义 使用 查询参数 定义&#xff1a;浏览器提供给服务器的额外信息&#xff0c;让服务器返回浏览器想要的数据 语法&#xff1a;http://xxxx.com/xxx/xxx?参数名1值1&参数名2值2

ChatGPT编程Python小案例(拿来就用)—解压zip压缩文件

ChatGPT编程Python小案例&#xff08;拿来就用&#xff09;—解压zip压缩文件 今天撸一本书&#xff0c;其中书中提供一个zip压缩文件的资料。下载之后&#xff0c;没有解压软件&#xff0c;&#xff08;也可能该文件可以自解压&#xff09;。这段时间已经深刻体会到AI编程带来…

爬虫 Day2

resp.close()#关掉resp 一requests入门 &#xff08;一&#xff09; 用到的网页&#xff1a;豆瓣电影分类排行榜 - 喜剧片 import requestsurl "https://movie.douban.com/j/chart/top_list" #参数太长&#xff0c;重新封装参数 param {"type": "…

【Unity每日一记】unity中的内置宏和条件编译(Unity内置脚本符号)

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…

EDI在汽车主机厂配送流程中的应用

汽车主机厂的汽车配送流程始于汽车 “生产结束 ” &#xff0c;止于 “交付给经销商 ” 。在这个流程中&#xff0c;企业作为主机厂的下游供应商&#xff0c;与主机厂的物流服务供应商之间的信息交换将会变得十分重要。 配送流程&#xff1a;运输订单以及报告 汽车主机厂提供预…