【python】matplotlib画图常用功能汇总

news2024/9/26 5:15:07

目录:

    • 一、matplotlib画图风格
    • 二、matplotlib图像尺寸和保存分辨率
    • 三、matplotlib子图相关功能
      • 创建子图:
      • 绘制子图:
      • 设置子图属性:
      • 调整布局:
      • 示例代码:
    • 四、matplotlib字体设置
      • 字体族和字体的区别
      • 字体选择和设置
        • 1. Matplotlib中的字体设置
        • 2. 使用中文字体
        • 3. 使用自定义字体
        • 4. 查看系统自带字体
        • 5. 其他字体属性
      • 示例代码:

一、matplotlib画图风格

在 Matplotlib 中,可以通过设置不同的绘图风格(style)来自定义图形的外观。Matplotlib有一些预定义的风格,也允许您创建自定义风格。

以下是一些基本的设置绘图风格的方法:

  1. 使用预定义的风格:
    Matplotlib提供了一些预定义的绘图风格,如 ‘seaborn’, ‘ggplot’, ‘fivethirtyeight’ 等。您可以使用以下代码之一设置风格:

    import matplotlib.pyplot as plt
    
    # 使用预定义的风格
    plt.style.use('seaborn')  # 也可以使用其他风格,如 'ggplot', 'fivethirtyeight' 等
    
  2. 自定义风格:
    如果您希望创建自定义风格,可以使用plt.style.context,在此上下文中设置参数:

    import matplotlib.pyplot as plt
    
    # 创建自定义风格
    with plt.style.context({
        'axes.edgecolor': 'gray',
        'axes.labelcolor': 'black',
        'xtick.color': 'black',
        'ytick.color': 'black',
        'xtick.direction': 'in',
        'ytick.direction': 'in',
        'grid.color': 'lightgray',
        'grid.linestyle': '--',
        'figure.facecolor': 'white',
        'figure.edgecolor': 'white',
    }):
        # 在此上下文中绘制图形,图形将使用上述自定义风格
        plt.plot(x, y)
        plt.xlabel('X-axis Label')
        plt.ylabel('Y-axis Label')
        plt.title('Custom Style Plot')
    
    # 图形在此上下文之外将使用默认风格
    
  3. 查看可用的预定义风格:
    如果想了解可用的预定义风格,可以使用以下代码:

    available_styles = plt.style.available
    print("Available styles:", available_styles)
    

    从中选择一个适合您的绘图的风格。


二、matplotlib图像尺寸和保存分辨率

  1. 图像的默认设置

    • 'figure.figsize': 图像的默认尺寸,例如[6.4, 4.8]
    • 'figure.dpi': 图像分辨率(每英寸点数),默认为100
      在 Matplotlib 中,您可以通过设置图形的大小和分辨率来调整图像的尺寸和清晰度。以下是一些方法:
  2. 设置图形大小:
    您可以使用 plt.figure(figsize=(width, height)) 来设置图形的大小。例如:

    import matplotlib.pyplot as plt
    
    # 设置图形大小为宽度10英寸,高度6英寸
    plt.figure(figsize=(10, 6))
    
    # 绘制图形
    plt.plot(x, y)
    
    # 显示图形
    plt.show()
    
  3. 设置分辨率:
    您可以使用 plt.savefig 方法保存图形(savefig语句要在show之前,否则图像show之后图像销毁无法保存),并通过 dpi 参数设置分辨率。例如:

    import matplotlib.pyplot as plt
    
    # 绘制图形
    plt.plot(x, y)
    
    # 保存图形并设置分辨率为300dpi
    plt.savefig('output_plot.png', dpi=300)
    
    # 显示图形(可选)
    plt.show()
    

    在上述例子中,图形将以300dpi的分辨率保存为PNG文件。您可以调整 dpi 的值以获得所需的分辨率。

  4. 综合使用大小和分辨率:
    如果需要在显示和保存时分别设置大小和分辨率,可以结合使用 plt.figureplt.savefig

    import matplotlib.pyplot as plt
    
    # 设置图形大小为宽度10英寸,高度6英寸
    plt.figure(figsize=(10, 6))
    
    # 绘制图形
    plt.plot(x, y)
    
    # 保存图形并设置分辨率为300dpi
    plt.savefig('output_plot.png', dpi=300)
    
    # 显示图形
    plt.show()
    

    在这个例子中,图形在显示时具有指定的大小,但保存时具有指定的分辨率。

根据您的具体需求,可以灵活调整图形的大小和分辨率。


三、matplotlib子图相关功能

Matplotlib中的子图(subplots)功能使您能够在同一图形上绘制多个子图。以下是子图相关功能的一些用法汇总:

创建子图:

  1. 使用 plt.subplots 创建多个子图:

    import matplotlib.pyplot as plt
    
    fig, axes = plt.subplots(nrows=2, ncols=2)
    

    在此示例中,fig 是整个图形对象,axes 是一个包含所有子图的2x2数组。

  2. 使用 plt.subplot 创建单个子图:

    import matplotlib.pyplot as plt
    
    plt.subplot(2, 2, 1)  # 创建一个2x2布局的图形,选择第一个子图
    

绘制子图:

  1. 在指定子图上绘制图形:

    axes[0, 0].plot(x1, y1)
    axes[0, 1].scatter(x2, y2)
    

    在此示例中,axes[0, 0] 表示第一行第一列的子图。

设置子图属性:

  1. 设置子图标题:

    axes[0, 0].set_title('Title for Subplot 1')
    
  2. 设置子图标签:

    axes[1, 0].set_xlabel('X-axis Label')
    axes[1, 0].set_ylabel('Y-axis Label')
    
  3. 设置图形标题:

    fig.suptitle('Overall Title for the Figure', fontsize=16)
    

调整布局:

  1. 调整子图之间的间距:

    plt.subplots_adjust(wspace=0.5, hspace=0.3)
    

    这将调整子图之间的水平(wspace)和垂直(hspace)间距。

示例代码:

import matplotlib.pyplot as plt
import numpy as np

# 生成示例数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

# 创建2x2的子图布局
fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(10, 8))

# 在子图上绘制图形
axes[0, 0].plot(x, y1)
axes[0, 1].scatter(x, y2)
axes[1, 0].hist(y1, bins=20, color='green', alpha=0.7)
axes[1, 1].barh(x, y2, color='orange', alpha=0.7)

# 设置子图属性
axes[0, 0].set_title('Sine Curve')
axes[0, 1].set_title('Scatter Plot')
axes[1, 0].set_title('Histogram')
axes[1, 1].set_title('Horizontal Bar Chart')

# 设置图形标题
fig.suptitle('Multiple Subplots Example', fontsize=16)

# 调整布局
plt.subplots_adjust(wspace=0.5, hspace=0.3)

# 显示图形
plt.show()

在这里插入图片描述

这个示例代码创建了一个包含四个子图的图形,并展示了如何在子图上绘制不同类型的图形。根据您的需求,可以进一步调整子图的属性和布局。


四、matplotlib字体设置

字体族和字体的区别

在Matplotlib和其他文本处理库中,字体族(font family)和字体(font)是两个相关但不同的概念。

  1. 字体族(Font Family):

    • 字体族指的是一组具有相似设计风格的字体。这组字体通常由不同的字体样式组成,包括正常(regular)、粗体(bold)、斜体(italic)等。
    • 字体族用于指定文本的整体外观风格,而不仅仅是单一字体样式。常见的字体族包括"serif"(衬线字体,如Times New Roman)、“sans-serif”(无衬线字体,如Arial)、“monospace”(等宽字体,如Courier New)等。
  2. 字体(Font):

    • 字体是字体族中的具体样式的实例,它定义了字符的外观、形状和大小。
    • 例如,“serif” 字体族可能包含具体的字体样式,如"Times New Roman"、"Georgia"等。每个具体的字体都属于特定的字体族,并具有独特的设计特征。

在Matplotlib中,通过指定字体族,您可以选择使用该族中的任何具体字体样式。字体族的选择通常受到个人偏好、图形的整体风格以及文本在不同设备上的可读性等因素的影响。

字体选择和设置

1. Matplotlib中的字体设置

Matplotlib提供了一些用于设置字体的方法,包括全局字体设置和特定元素的字体设置。

import matplotlib.pyplot as plt

# 全局字体设置
plt.rcParams['font.family'] = 'sans-serif'  # 指定字体家族
plt.rcParams['font.sans-serif'] = ['Arial']  # 指定具体字体

# 也可以直接在绘图时指定字体
plt.title('Title', fontdict={'fontname': 'Arial', 'fontsize': 16})
plt.xlabel('X Label', fontdict={'fontname': 'Arial', 'fontsize': 12})
plt.ylabel('Y Label', fontdict={'fontname': 'Arial', 'fontsize': 12})

# 显示图形
plt.show()
2. 使用中文字体

对于中文字体,可以使用支持中文的字体,如SimHei、Microsoft YaHei等。

plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体或其他中文字体
3. 使用自定义字体

可以下载并使用第三方的中文字体文件,然后指定路径。

plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['font.sans-serif'] = ['Path/To/Your/CustomChineseFont.ttf']  # 替换为自定义中文字体文件的路径
4. 查看系统自带字体
from matplotlib import font_manager

for f in font_manager.fontManager.ttflist:
    print(f.name)

以上方法应该能够解决大多数中文字体无法显示的问题。根据具体需求,选择适合的中文字体并进行相应的设置。

5. 其他字体属性

plt.rcParams是一个字典,用于设置Matplotlib的默认配置参数。以下是一些常见的plt.rcParams属性,用于定制Matplotlib的外观和行为:

  1. 字体相关设置

    • 'font.family': 字体家族,默认为'sans-serif'
    • 'font.sans-serif': 无衬线字体的具体名称,默认为'DejaVu Sans'
    • 'font.serif': 有衬线字体的具体名称,默认为'DejaVu Serif'
    • 'font.monospace': 等宽字体的具体名称,默认为'DejaVu Sans Mono'
    • 'font.size': 字体大小,默认为10
  2. 线条和标记的默认设置

    • 'lines.linewidth': 线条宽度,默认为1.5
    • 'lines.linestyle': 线条风格,默认为'-'
    • 'lines.marker': 数据点标记,默认为'None'
  3. 刻度相关设置

    • 'xtick.labelsize': X轴刻度标签字体大小,默认为'medium'
    • 'ytick.labelsize': Y轴刻度标签字体大小,默认为'medium'
    • 'xtick.direction': X轴刻度方向,默认为'out'
    • 'ytick.direction': Y轴刻度方向,默认为'out'
  4. 文本相关设置

    • 'text.color': 默认文本颜色,默认为'black'
  5. 坐标轴范围

    • 'axes.xmargin''axes.ymargin': 控制数据显示的空白边缘比例,默认为0.05

等等。你可以通过plt.rcParams.keys()来查看所有的默认配置参数。
在这里插入图片描述
定制这些参数可以让你在绘图时不必每次都手动设置相同的属性,提高了代码的可读性和重复使用性。

示例代码:

import matplotlib.pyplot as plt

plt.rcParams['font.family'] = 'serif'
plt.rcParams['font.serif'] = 'Times New Roman'
plt.rcParams['font.size'] = 20
plt.rcParams['font.weight'] = "bold"
plt.rcParams['font.style'] = "italic"
plt.rcParams['text.color'] = "red"
plt.rcParams['xtick.color'] = "purple"

plt.plot([1, 2, 3, 4], [10, 20, 25, 30])
plt.title('Sample chart')
plt.xlabel('X-axis', color="blue")
plt.ylabel('Y-axis')

# 或者在特定的文本上设置字体属性
plt.text(1, 29, 'Hello, Matplotlib!', fontsize=16, fontweight='bold', fontstyle = 'oblique', color='green')

plt.show()

在这里插入图片描述

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

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

相关文章

蓝桥杯单片机组备赛——数码管静态显示

文章目录 一、预备知识1.1 段选&位选1.2 静态显示和动态显示 二、原理图分析三、代码编写思路四、最终代码五、静态数码管显示练习与答案5.1 练习题目5.2 练习答案 一、预备知识 1.1 段选&位选 段选:段选指的是选择数码管哪个“段”应该被点亮。一般情况下…

py连接sqlserver数据库报错问题处理。20009

报错 pymssql模块连接sqlserver出现如下错误: pymssql._pymssql.OperationalError) (20009, bDB-Lib error message 20009, severity 9:\nUnable to connect: Adaptive Server is unavailable or does not exist (passwordlocalhost)\n) 解决办法: 打…

超声波清洗机洗眼镜有用吗?越贵的超声波清洗机洗的越干净吗?

首先!作为一个眼镜党同时兼在眼镜店工作的人,用超声波清洗机洗眼镜可以说是非常高效的一种清洁方式,远比于我们手动清洗还要方便,现在市面上有非常多超声波清洗机的清洗技术是不太行的,所以大家在购买的时候还是需要多…

互联网资讯精选:科技爱好者周刊 | 开源日报 No.145

ruanyf/weekly Stars: 37.4k License: NOASSERTION 记录每周值得分享的科技内容,提供大量就业信息。欢迎投稿、推荐或自荐文章/软件/资源,并可通过多种方式进行搜索。 提供丰富的科技内容每周更新可以提交工作/实习岗位支持投稿和推荐功能 GyulyVGC/…

监督、半监督、无监督、自监督学习方法之间的区别

概念辨别 监督学习(Supervised Learning):利用大量的标注数据来训练模型,模型最终学习到输入和输出标签之间的相关性;半监督学习(Semi-supervised Learning):利用少量有标签的数据和…

行为驱动测试 python + behave

行为驱动,Behave-Driven Development,简称BDD。在行为驱动中运用结构化的自然语言描述场景测试,然后将这些结构化的自然语言转化为可执行的测试脚本或者其他形式。BDD的一种优势是,它建立了一种通用语言,而这种语言可以…

5.MapReduce之Combiner-预聚合

目录 概述本地预计算 Combiner 意义实践前提代码日志观察 结束 概述 在 MR、Spark、Flink 中,常用的减少网络传输的手段。 通常在 Reducer 端合并,shuffle 的数据量比在 Mapper 端要大,根据业务情况及数据量极大时,将大幅度降低效…

rime中州韵小狼毫 汉语拼音输入方案

在word中,我们可以轻易的给汉字加上拼音,如下👇: 但是,如何单独的输入拼音呢?例如输入 pīn yīn, 再如 zhōng guō。今天我们分享一个使用rime中州韵小狼毫须鼠管输入法配置的输入汉语拼音的输入方案。功…

上海AI实验室等开源,音频、音乐统一开发工具包Amphion

上海AI实验室、香港中文大学数据科学院、深圳大数据研究院联合开源了一个名为Amphion的音频、音乐和语音生成工具包。 Amphion可帮助开发人员研究文本生成音频、音乐等与音频相关的领域,可以在一个框架内完成,以解决生成模型黑箱、代码库分散、缺少评估…

【开源】基于JAVA+Vue+SpringBoot的考研专业课程管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 考研高校模块2.3 高校教师管理模块2.4 考研专业模块2.5 考研政策模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 考研高校表3.2.2 高校教师表3.2.3 考研专业表3.2.4 考研政策表 四、系统展示五、核…

面试题:说一下缓存穿透?缓存击穿?缓存雪崩?

文章目录 面试题1:怎么解决缓存穿透问题的?那我们怎样来解决这种缓存穿透问题呢?布隆过滤器的优缺点 面试题2:说一下缓存击穿吧,你们是怎么解决的?解决方案: 面试题3:那缓存雪崩说说…

【服务器数据恢复】服务器硬盘磁头损坏的数据恢复案例

服务器硬盘故障: 一台服务器上raid阵列上有两块硬盘出现故障,用户方已经将故障硬盘送到其他机构检测过,其中一块硬盘已经开盘,检测结果是盘片损伤严重;另一块硬盘尚未开盘,初步判断也存在硬件故障&#xff…

大数据技术原理与应用 期末复习 知识点全总结(林子雨版

目录 1.第一章 大数据概述:(一)三次信息化浪潮(二)人类社会数据产生方式的3个阶段(三)大数据的3个发展阶段(四)大数据4V概念(五)数据存储单位之间…

九、IndexedDB前端缓存

前言 在通才 3D 数字工厂项目中,由于场景文件(glb 资源文件)过大,并且每次加载页面时,glb 文件都会被重新加载,造成页面加载缓慢,最后通过保存生成 Blob 格式存储到 IndexedDB 中,增加文件缓存,减少资源重复加载。 为什么需要 IndexedDB 随着前端技术的发展和浏览器…

上门回收小程序开发,让回收更加简单

资源回收一直是当下深受大众关注的话题,如何做到资源不浪费,成为了大众要考虑的问题。在人们环保意识的加深下,回收行业也是获得了大众的关注,逐渐形成了一个新的商业模式。 随着互联网技术的发展,回收行业也更加方便…

中霖教育:CPA注册会计师报考注意事项有哪些?

在报考注册会计师时,以下这些注意事项你一定要了解! 1.CPA报考的条件 考生需要具备完全民事行为能力;具有高等专科以上学校毕业学历,或者具有会计或者相关专业中级以上技术职称。 2.专业阶段考试科目为: 《会计》、《审计》、《税法》、《…

HarmonyOS讲解并演示 animateTo 动画效果

本文 我们一起看一看动画 首先 harmonyos中的东西 其实就是通过改变 响应式数据的值 以及配合动画参数 即可完成 我们先来看 布局更新动画 中的 显示动画 简单说 触发事件 改变组件的位置信息 我们先编写代码如下 Entry Component struct Index {State itemAlign: Horizont…

【Maven】005-基于 IDEA 进行 Maven 依赖管理

【Maven】005-基于 IDEA 进行 Maven 依赖管理 文章目录 【Maven】005-基于 IDEA 进行 Maven 依赖管理一、Maven 依赖管理二、GAVP 再说明三、Maven 工程依赖管理配置1、依赖配置2、版本统一声明和使用3、依赖范围说明4、Maven工程依赖下载失败错误解决(重点&#xf…

WAMP apache 无法启动(端口 80 未使用)

这段时间系统重装后,安装WAMP Server,装好后点击启动绿了下然后又变成了黄色,托盘图标无论是左键点击还是右键点击都没有反应,wampapache64服务也启动不起来,提示“windows不能在本地计算机启动wampapache”&#xff0…

Linux QT以太网配置及相关知识

Linux QT以太网配置及相关知识 平台和内容概述安装Qt Creator设计用户界面编辑源代码自定义LineEdit创建槽函数以太网逻辑功能实现静态配置ui逻辑:功能概述代码实现DNS退出程序输入框中的ip规范保存数据和读取数据构建文件编译运行平台注意点开机自动配置以太网总结平台和内容…