【学习笔记】Python 使用 matplotlib 画图

2024-04-26 21:04

本文主要是介绍【学习笔记】Python 使用 matplotlib 画图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 安装
    • 中文显示
    • 折线图、点线图
    • 柱状图、堆积柱状图
    • 坐标轴断点
    • 参考资料

本文将介绍如何使用 Python 的 matplotlib 库画图,记录一些常用的画图 demo 代码

安装

# 建议先切换到虚拟环境中
pip install matplotlib

中文显示

新版的 matplotlib 已经支持字体回退功能,因此可以直接设置字体为 Times New RomanSimSun(宋体)。这样英文会以 Times New Roman 显示,中文会以 宋体 显示

import matplotlib.pyplot as pltplt.rcParams['font.family'] = ['Times New Roman','SimSun']

折线图、点线图

plot 即可以绘制折线图,也可以绘制点线图,通过 marker 参数设置点的样式,markersize 设置点的大小

import matplotlib.pyplot as plt# 设置中文字体为 Times New Roman 和 宋体
plt.rcParams['font.family'] = ['Times New Roman','SimSun']# 生成数据
x = range(0, 6)
y = [i**3 for i in x]# 绘制点线图
plt.plot(x, y, marker='o', markersize=6, label='y=x^3')# 添加坐标轴标签
plt.xlabel('x')
plt.ylabel('y')# 配置坐标轴范围
plt.xlim(0)
plt.ylim(0)# 添加图例
plt.legend()# 配置紧凑布局
plt.tight_layout(pad=0.1)# 保存图片
plt.savefig('plot.png')

在这里插入图片描述

柱状图、堆积柱状图

bar 绘制柱状图,通过 bottom 参数可以绘制堆积柱状图

# 生成数据
x = range(1, 6)
y1 = [1 for i in x]
y2 = [i for i in x]# 绘制堆积柱状图
plt.bar(x, y1, color='tab:blue', edgecolor='black', label='y1=1', width=0.5)
plt.bar(x, y2, bottom=y1, color='tab:orange', edgecolor='black', label='y2=x', width=0.5)

在这里插入图片描述

坐标轴断点

有时需要在柱状图中添加 y 轴的断点,可以通过画两个相同的图,并配置不同的 y 轴范围,然后在两个图之间添加截断线的方式来实现

# 生成数据
x = range(1, 5)
y = [i**3 for i in x]# 分别绘制上下两个图
b1 = ax1.bar(x, y, color='tab:blue', edgecolor='black', label='y1=1', width=0.5)
b2 = ax2.bar(x, y, color='tab:blue', edgecolor='black', label='y1=1', width=0.5)# 显示数据
ax1.bar_label(b1, fmt='%d', label_type='edge')
ax2.bar_label(b2, fmt='%d', label_type='edge')# 配置上图的坐标轴范围
ax1.set_ylim(15)
ax1.set_yticks([20, 40, 60])
# 删掉上图的下边框
ax1.spines['bottom'].set_visible(False)
# 隐藏上图的x轴
ax1.xaxis.set_visible(False)# 配置下图的坐标轴范围
ax2.set_ylim(0, 9)
ax2.set_yticks([0, 2, 4, 6, 8])
# 删掉下图的上边框
ax2.spines['top'].set_visible(False)# 添加截断线,由于图高度比例为1:2,所以截断线的y坐标也需要按比例设置
d = .015
kwargs = dict(transform=ax1.transAxes, color='k', clip_on=False)
ax1.plot((-d, +d), (-2*d, +2*d), **kwargs) 
ax1.plot((1 - d, 1 + d), (-2*d, +2*d), **kwargs)kwargs.update(transform=ax2.transAxes)
ax2.plot((-d, +d), (1 - d, 1 + d), **kwargs)
ax2.plot((1 - d, 1 + d), (1 - d, 1 + d), **kwargs)

在这里插入图片描述

参考资料

  • 【GitHub】Implement Font-Fallback in Matplotlib
  • 【matplotlib】axes.Axes.bar_label
  • 【matplotlib】Broken Axis

本文作者: ywang_wnlo
本文链接: https://ywang-wnlo.github.io/posts/731b80f7/
版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明

这篇关于【学习笔记】Python 使用 matplotlib 画图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/938650

相关文章

������森林消防泵:特点及使用场景 /恒峰智慧科技������

在大自然的怀抱中,森林是地球上最美丽的绿色家园。然而,森林火灾却时常威胁着这片美丽的家园。为了保护森林,我们有幸拥有了一支强大的森林消防泵队伍。今天,就让我们一起来了解一下这些守护者们的故事吧! ������ 一、森林消防泵的作用 ��� 森林消防泵是一种专门用于扑灭森林火灾的设备。它能够将水迅速地输送到火源附近,以便及时灭火。与传统的消防工具相比,森林消防泵具有以下优势: 1️

Vue Baidu Map 插件的使用

最近在做一个项目,技术采用的是Vue.js套餐,有个百度地图的需求,当时,大脑宕机,立马去引入百度地图API,当时想到两种方法,一种是在index.html中全局引入js,此法吾不喜,就采用了第二种异步加载jsonp的方式,细节无关本文,暂且不提。噼里啪啦~噼里啪啦~ 代码一气呵成,本地测试完,立马上服务器测试,what ??? 什么鬼 ? 进入界面后,我的地图呢??地图呢??回看代码,代码中有一

如何在vue单页应用中使用百度地图

作为一名开发人员,每次接到开发任务,我们首先应该先分析需求,然后再思考技术方案和解决方案。三思而后行,这是一个好的习惯。 需求:本项目是采用vue组件化开发的单页应用项目,现需要在项目中引入百度的地图展示功能,用于展示所有项目的分布情况。搜索功能(省略,不是这里介绍的内容)....... 交互:选中左侧的项目,选中项高亮,自动定位到右侧地图中项目所在位置,并弹出项目的基本信息。点击右侧的项目

vue-cli项目中使用echarts和echarts的百度地图扩展bmap

安装echarts: npm install echarts --save 在main.js中引入echarts: import Echarts from 'echarts' Vue.prototype.echarts = Echarts Vue.use(Echarts) 安装百度地图: 百度地图API官网申请key; 在Index.html中引入: 在build/webpack.base.

【使用ChatGPT的API之前】OpenAI API提供的可用模型

文章目录 一. ChatGPT基本概念二. OpenAI API提供的可用模型1. InstructGPT2. ChatGPT3. GPT-4 三. 在OpenAI Playground中使用GPT模型-ing 在使用GPT-4和ChatGPT的API集成到Python应用程序之前,我们先了解ChatGPT的基本概念,与OpenAI API提供的可用模型。   一. ChatG

软件杯 深度学习花卉识别 - python 机器视觉 opencv

文章目录 0 前言1 项目背景2 花卉识别的基本原理3 算法实现3.1 预处理3.2 特征提取和选择3.3 分类器设计和决策3.4 卷积神经网络基本原理 4 算法实现4.1 花卉图像数据4.2 模块组成 5 项目执行结果6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习花卉识别 - python 机器视觉 opencv 该项目较为新颖,适合作为竞赛课题

一个程序员小白第一次使用低代码平台的感受:原来开发工作可以这么简单

写在前面 Halo,大家好,我是一只努力奋斗的程序猿小白。作为第一次接触低代码,我回想自己这么久以来,花费两三天去完成的需求,竟然可以短时间内完成,难道小丑是我自己? 下面我就分享一下使用云程低代码平台的经验,希望可以帮助大家了解低代码开发。 Ps:官网地址:http://www.yunchengxc.com/ 什么是低代码?    作为低代码小白,我没有接触过低代码开发,这个问题是

vue 笔记,ref 及 $event 事件对象

ref : 在标签上添加 ref = “name” ,表示获取当前元素节点 1 <input type="text" ref="info"> 获取 1 this.$refs.info.value    获取事件对象 , 方法参数传递  $event  <button @click="Event($event)">事件对象</button> 获取 Event(e){co

Tcl学习笔记(四)——流程控制、过程、命名空间、访问文件

1. 流程控制 if命令         if命令后跟两个参数:表达式、待执行的Tcl脚本。if命令中的每一个左大括号都必须与它前一个字符同行。         有elseif和else可选子句,使用时与if中第二个参数的右大括号放在同一行。 switch命令         switch命令利用一个给定值与多个模式进行匹配,执行匹配成功的TCL脚本,有两个参数:待检测的值、一个或多

wordpress安装教程_如何在linux中安装wordpress程序-apache php(服务器学习十二)

最后附带安装工程中的问题! wordpress安装教程_如何在linux中安装wordpress程序 本套wordpress安装教程是本人在linux中安装wordpress程序之后记录下来的,所有的步骤也都是经过本人自己验证过的,所以请放心看完整个wordpress程序的安装过程。   在linux系统中安装wordpress程序之前需要准备安装好php,mysql,apache htt