1. 前言

我们在写论文或是在写技术报告时,绘图的背景是白色,可能会比较单调,本教程介绍如何添加层次性的背景图片,来给数据赋予更加丰富的层次。以下代码展示如何在图中添加背景图

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')

生成结果如下图所示:

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'))

最终结果如下图:

matplotlib绘制曲线图添加背景图片相关推荐

  1. python绘制梅尔谱图_3D星空图V2版——添加背景图片和音乐

    阿黎逸阳   精选Python.SQL.R.MATLAB等相关知识,让你的学习和工作更出彩(可提供风控建模干货经验). 还记得之前发表的3D星空图吗?一直想给喜欢的星空图加上背景图片和音乐. 经过研究 ...

  2. 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 ...

  3. .net的label的背景如何设置成为透明_css如何设置背景图片?background属性添加背景图片...

    在前端开发过程中,为了页面的美观,往往都会给html页面添加背景图片.那么如何利用css设置html中用图片做背景?本章就给大家介绍css怎样设置背景图片.有一定的参考价值,有需要的朋友可以参考一下, ...

  4. echarts地图的常见用法:基本使用、区域颜色分级、水波动画、区域轮播、给地图添加背景图片和图标、3d地图

    前言 最近几天用echarts做中国地图,就把以前写的demo:在vue中实现中国地图 拿来用,结果到项目里直接报错了,后来发现是因为版本的问题,没办法只能从头进行踩坑了.以下内容基于vue3 和 e ...

  5. java 窗体添加背景图片_Java Swing实现窗体添加背景图片的2种方法详解

    本文实例讲述了java Swing实现窗体添加背景图片的2种方法.分享给大家供大家参考,具体如下: 在美化程序时,常常需要在窗体上添加背景图片.通过搜索和测试,发现了2种有效方式.下面分别介绍. 1. ...

  6. ImGui添加背景图片的两种方式

    给ImGui添加背景图片的两种方式 最近在使用ImGui做客户端程序,想给窗口添加背景图片,但是作者的文档里面好像并没有讲如何添加背景图片,研究了下找到了两种方式. 第一种 创建一个和窗口一样大的Im ...

  7. Python绘图添加背景图片

    Python绘图添加背景图片 为什么要添加背景图片? 添加背景图片时遇到的问题 1.背景图片不清晰 原始背景图片 绘图后背景图片 添加背景图片Python代码 2.线条在离散点上面 看官,走过路过,不 ...

  8. java swing 设置背景_swing-窗体添加背景图片的2种方法

    在美化程序时,常常需要在窗体上添加背景图片.通过搜索和测试,发现了2种有效方式.下面分别介绍. 1.利用JLabel加载图片 利用JLabel自带的setIcon(Icon icon)加载icon,并 ...

  9. java swing背景_java Swing中添加背景图片(总结)

    在java GUI图形化设计中,Swing组件添加背景图片主要有两中情况:1,在Jpanl面板中添加背景图片,2,在jLable中添加背景图片 首先介绍一种最巧妙的背景图片添加方法, 1.利用JLab ...

最新文章

  1. Eclipse启动失败:No java virtual machine was found after searching the follwing locations
  2. linux 565显示格式,RGB565转BMP格式 C语言程序
  3. Android 6.0 Changes
  4. 【洛谷 T47488】 D:希望 (点分治)
  5. 在Excel中实现下拉列表选择录入
  6. java中return的作用
  7. IBM HMC V7R740虚拟机安装实战
  8. Jsp+javascript打造二级级联下拉菜单
  9. 我是怎么用缠论在商品里边抢钱之二 (2019-07-12 15:10:10)
  10. Linux基础知识 | vi编辑器
  11. 3*3旋转矩阵得到旋转角(c++代码)
  12. 2022,程序员的出路在哪里?
  13. java 系统临时目录_在java中创建临时文件夹
  14. 双硬盘SSD+HDD安装双系统win10+Ubuntu16.04
  15. 敏捷开发之XP极限编程
  16. 人脸扫描建模_黑科技 | 3D人脸建模可以多简单?一张照片就搞定!
  17. 用Ogre实现画中画 [ 截图 ]
  18. Java篇 - 最全BigInteger和BigDecimal实战
  19. 计算机毕业设计(附源码)python语言学习系统
  20. gedit文本编辑器的设置

热门文章

  1. java中实现电影售票类_java使用三层架构实现电影购票系统
  2. matlab 字符串的比较,MATLAB字符串比较总结
  3. StarLink星座最新动态及星间组网动态路由探讨
  4. 人工智能AI智能加速卡技术
  5. modprobe安装_MacBook安装Arch的一些设置
  6. 20天拿下华为OD笔试之【DFS/BFS】2023Q1A-开心消消乐【闭着眼睛学数理化】全网注释最详细分类最全的华为OD真题题解
  7. Detour工具包使用
  8. 2021-09-29《创新创业理论研究与实践 》期刊发表
  9. rtx3080性能相当于什么水平 rtx3080参数
  10. 使用Node-RED搭建一个天气预报面板