matplotlib绘制曲线图添加背景图片
前言
我们在写论文或是在写技术报告时,绘图的背景是白色,可能会比较单调,本教程介绍如何添加层次性的背景图片,来给数据赋予更加丰富的层次。以下代码展示如何在图中添加背景图
2、渐变图片的生成
from datetime import datetimeimport numpy as np
import pandas as pdfrom matplotlib import cm, colors
import matplotlib.image as mpimg
import matplotlib.pyplot as plt
import seaborn as snssns.set_context('talk', font_scale=1.3)## 自定义colormap
colors_pm = ['#009966', '#FFDE33', '#FF9A32', '#CC0033', '#660099', '#7D0023']
levels = [0, 35, 75, 115, 150, 250, 350]cmap_pm = colors.ListedColormap(colors_pm)
norm = colors.BoundaryNorm(levels, cmap_pm.N)s = np.repeat(np.arange(350), 365).reshape((350, 365))fig, ax = plt.subplots(figsize=(18, 12))ax.imshow(s, cmap=cmap_pm, alpha=0.5, norm=norm, aspect='auto',extent=[xlims[0], xlims[-1], levels[-1], levels[0]])# imshow显示的y轴可能是相反的,因此需要反转y轴
ax.invert_yaxis()## 去除 x和y轴的ticklabels以及tick
ax.set_xticks([])
ax.set_yticks([])
ax.tick_params(dict(length=0))fig.savefig('img.png', dpi=300, bbox_inches='tight')
生成结果如下图所示:
![](/assets/blank.gif)
3、添加背景图片至绘图
示例展示了如何在图中添加背景图,添加背景图时可以添加多个需要的背景图片,关键在于设置 imshow 函数的 extend 参数。
from datetime import datetimeimport numpy as np
import pandas as pdfrom matplotlib import cm, colors
import matplotlib.pyplot as plt
import seaborn as snssns.set_context('talk', font_scale=1.3) # 调整图的配置## 自定义 colormap
colors_pm = ['#009966', '#FFDE33', '#FF9A32', '#CC0033', '#660099', '#7D0023']
levels = [0, 35, 75, 115, 150, 250, 350]cmap_pm = colors.ListedColormap(colors_pm)
norm = colors.BoundaryNorm(levels, cmap_pm.N)## 创建 DataFrame
date_range = pd.date_range(datetime(2015, 1, 1), datetime(2015, 12 ,31), freq='1d')
data = pd.DataFrame(np.random.random(365) * 300, index=date_range, columns=['pm2.5'])s = np.repeat(np.arange(350), 365).reshape((350, 365))fig, ax = plt.subplots(figsize=(18, 12))xlims = mdates.date2num(data.index.values) # 转换datetime为timestamp## imshow 默认 aspect 为 equal,应设置为 auto 才能使上述 figsize 参数生效
ax.imshow(s, cmap=cmap_pm, alpha=0.5, norm=norm, aspect='auto',extent=[xlims[0], xlims[-1], levels[-1], levels[0]])ax.invert_yaxis() # 反转 y 轴ax.xaxis_date() # 设置x轴刻度格式# 不能使用 plot_date,因为imshow 暂时不支持 datetime axes
ax.plot(data['pm2.5'], color='k', linewidth=2) date_format = mdates.DateFormatter('%m/%d')
ax.xaxis.set_major_formatter(date_format)ax.set_yticks(levels)
_ = ax.set_ylabel('PM$_2.5$($\mu$g/m$^3$)', fontdict=dict(fontfamily='Times New Roman'))
最终结果如下图:
![](/assets/blank.gif)
matplotlib绘制曲线图添加背景图片相关推荐
- python绘制梅尔谱图_3D星空图V2版——添加背景图片和音乐
阿黎逸阳 精选Python.SQL.R.MATLAB等相关知识,让你的学习和工作更出彩(可提供风控建模干货经验). 还记得之前发表的3D星空图吗?一直想给喜欢的星空图加上背景图片和音乐. 经过研究 ...
- VC中为对话框添加背景图片
From: http://blog.ezcn8.com/2011/06/11/vc%E4%B8%AD%E4%B8%BA%E5%AF%B9%E8%AF%9D%E6%A1%86%E6%B7%BB%E5%8 ...
- .net的label的背景如何设置成为透明_css如何设置背景图片?background属性添加背景图片...
在前端开发过程中,为了页面的美观,往往都会给html页面添加背景图片.那么如何利用css设置html中用图片做背景?本章就给大家介绍css怎样设置背景图片.有一定的参考价值,有需要的朋友可以参考一下, ...
- echarts地图的常见用法:基本使用、区域颜色分级、水波动画、区域轮播、给地图添加背景图片和图标、3d地图
前言 最近几天用echarts做中国地图,就把以前写的demo:在vue中实现中国地图 拿来用,结果到项目里直接报错了,后来发现是因为版本的问题,没办法只能从头进行踩坑了.以下内容基于vue3 和 e ...
- java 窗体添加背景图片_Java Swing实现窗体添加背景图片的2种方法详解
本文实例讲述了java Swing实现窗体添加背景图片的2种方法.分享给大家供大家参考,具体如下: 在美化程序时,常常需要在窗体上添加背景图片.通过搜索和测试,发现了2种有效方式.下面分别介绍. 1. ...
- ImGui添加背景图片的两种方式
给ImGui添加背景图片的两种方式 最近在使用ImGui做客户端程序,想给窗口添加背景图片,但是作者的文档里面好像并没有讲如何添加背景图片,研究了下找到了两种方式. 第一种 创建一个和窗口一样大的Im ...
- Python绘图添加背景图片
Python绘图添加背景图片 为什么要添加背景图片? 添加背景图片时遇到的问题 1.背景图片不清晰 原始背景图片 绘图后背景图片 添加背景图片Python代码 2.线条在离散点上面 看官,走过路过,不 ...
- java swing 设置背景_swing-窗体添加背景图片的2种方法
在美化程序时,常常需要在窗体上添加背景图片.通过搜索和测试,发现了2种有效方式.下面分别介绍. 1.利用JLabel加载图片 利用JLabel自带的setIcon(Icon icon)加载icon,并 ...
- java swing背景_java Swing中添加背景图片(总结)
在java GUI图形化设计中,Swing组件添加背景图片主要有两中情况:1,在Jpanl面板中添加背景图片,2,在jLable中添加背景图片 首先介绍一种最巧妙的背景图片添加方法, 1.利用JLab ...
最新文章
- Eclipse启动失败:No java virtual machine was found after searching the follwing locations
- linux 565显示格式,RGB565转BMP格式 C语言程序
- Android 6.0 Changes
- 【洛谷 T47488】 D:希望 (点分治)
- 在Excel中实现下拉列表选择录入
- java中return的作用
- IBM HMC V7R740虚拟机安装实战
- Jsp+javascript打造二级级联下拉菜单
- 我是怎么用缠论在商品里边抢钱之二 	(2019-07-12 15:10:10)
- Linux基础知识 | vi编辑器
- 3*3旋转矩阵得到旋转角(c++代码)
- 2022,程序员的出路在哪里?
- java 系统临时目录_在java中创建临时文件夹
- 双硬盘SSD+HDD安装双系统win10+Ubuntu16.04
- 敏捷开发之XP极限编程
- 人脸扫描建模_黑科技 | 3D人脸建模可以多简单?一张照片就搞定!
- 用Ogre实现画中画 [ 截图 ]
- Java篇 - 最全BigInteger和BigDecimal实战
- 计算机毕业设计(附源码)python语言学习系统
- gedit文本编辑器的设置
热门文章
- java中实现电影售票类_java使用三层架构实现电影购票系统
- matlab 字符串的比较,MATLAB字符串比较总结
- StarLink星座最新动态及星间组网动态路由探讨
- 人工智能AI智能加速卡技术
- modprobe安装_MacBook安装Arch的一些设置
- 20天拿下华为OD笔试之【DFS/BFS】2023Q1A-开心消消乐【闭着眼睛学数理化】全网注释最详细分类最全的华为OD真题题解
- Detour工具包使用
- 2021-09-29《创新创业理论研究与实践 》期刊发表
- rtx3080性能相当于什么水平 rtx3080参数
- 使用Node-RED搭建一个天气预报面板