文章目录

  • 一、快速且正确的显示中文
  • 二、提高分辨率
  • 三、添加数学公式
  • 四、一行代码提高颜值
  • 五、调整图例位置
  • 六、获得当前绘图区域
  • 七、隐藏坐标轴
  • 八、指定坐标轴刻度
  • 九、添加自定义图片
  • 十、添加表格

大家好,在使用 Python 进行数据可视化时,相信不论是什么工具,你都会发现有些操作/代码段会频繁的用到,这一点在matplotlib上尤为突出。

本文就向大家分享十个我常用的一些小技巧,大多一行代码,短小精悍,威力无穷。喜欢记得收藏、点赞、关注。

一、快速且正确的显示中文

matplotlib中,默认是没法显示中文的,原因很简单,默认使用的字体文件中不含中文。

当你搜索如何设置中文时,会有很多教程,我曾经也详细的介绍过3种方法,但是在有的电脑上折腾很久也搞不定,所以当你浪费了太多时间也没法解决,或者在一台陌生的设备上使用,需要快速的让matplotlib显示中文可以使用下面的代码

import matplotlib as mplWRYH = mpl.font_manager.FontProperties(fname='/Users/font/WeiRuanYaHei-1.ttf')
# 微软雅黑字体plt.title('可视化', fontproperties=WRYH)

很简单,既然修改默认的字体搞不定,那么就准备一个中文字体的路径,并在每次需要显示中文的组件(标题、注释、图例等)时,就强制指定使用这个字体。

这个办法一定可以让你图中的中文快速且正确显示出来,但是如果涉及中文的地方过多,还是需要在以后尝试一劳永逸的将中文字体添加到默认字体集中。

二、提高分辨率

如果感觉默认生成的图形分辨率不够高,可以尝试修改 dpi 来提高分辨率,在matplotlib中可以一次性通过plt.rcParams修改,也可以在创建画布时为这一次的绘制修改,例如将分辨率调整至100

plt.figure(figsize = (7,6),dpi =100)

如果你的设备是配备Retina屏幕的mac,可以在jupyter notebook中,使用下面一行代码有效提高图像画质

%config InlineBackend.figure_format = 'retina'

三、添加数学公式

有时我们在绘图时需要添加带有数学符号、公式的文字,如果直接使用默认的方法添加,虽然可以实现,但是不够美观,其实在matplotlib中也支持输出数学公式,就像下面的文字注释一样

只用在需要出现公式的位置使用r’你的公式’即可,比如plt.text(11000,0.45,r'拟合的曲线为$f(x) = 1.3x^2-6.54x+0.5$')注意$$中是latex格式的表达方式,如果不熟悉的话需要自行搜索。

当然,也可以使用plt.rcParams['text.usetex'] = True设置默认tex输出,异曲同工,此处不多介绍。

四、一行代码提高颜值

有时我们会觉得matplotlib默认制作出来的图片太朴素了,不够高级,其实开发者也内置了几十种主题让我们自己选择,只要使用plt.style.use('主题名')指定主题即可。

例如使用R语言中经典的ggplot主题

plt.style.use('ggplot')

另外一种提高图形颜值的代码是借用seaborn调色板修改配色,也是一行代码,通过sns.set_palette(xxxx)就能直接调整全局配色方案,下面是我比较喜欢的一种配色

import seaborn as sns
sns.set_palette("pastel", 8)

五、调整图例位置

虽然matplotlib在生成图例时,默认会选择一个最合适的位置,但是有时依旧不能让人满意。

相信你知道我们可以使用loc = xxxx自己设置图例位置,但是对于xxxx每次都要查,看文字说明左上右下不如一张图来的快,下面是我们可以选择的9个位置,可以根据自己的需要进行选择。

六、获得当前绘图区域

在原理篇文章中,我曾经说到如果想要获得更精细的调整,就需要使用ax.xxxx进行调整,但有时我们开始没有使用fig,ax=plt.subplots(figsize = (6,4),dpi=100)来定义ax,在需要使用时重新开始并定义是不推荐的,这时可以使用

ax = plt.gca()

获得当前Figure中的Axes,并继续正常使用ax.xxxx调整

七、隐藏坐标轴

对于有些图形我们希望通过隐藏坐标轴来显得更加美观,这时可以ax.spines获取对应位置的的Spine对象,之后便可以任意修改是否显示与显示颜色,比如让右边和上面的线消失或者修改颜色

ax.spines['right'].set_color('None')
ax.spines['top'].set_color('None')

ax.spines['right'].set_color('deeppink')
ax.spines['top'].set_color('blue')
ax.spines['bottom'].set_color('green')
ax.spines['left'].set_color('red')

八、指定坐标轴刻度

如果对于默认生成的坐标轴刻度不满意,我们可以使用plt.yticks([])来自定义刻度,注意需要传入一个你想要的刻度list,并且长度需要和刻度对应,例如下方代码

label = ['2月7日','3月25日','5月13日','7月2日','8月21日','10月10日','11月29日','12月31日']plt.yticks(range(0,400,50), labels=label,rotation = 40,color = 'black')

当然如果label是空的话,可以结合上一个技巧把对应的坐标轴干掉,彻底消失

plt.yticks([])

九、添加自定义图片

有时我们希望在对数据可视化后添加一些图片来丰富元素,虽然可以使用ps添加,但其实matplotlib也可以独立完成,总共分两步:打开图片——添加图片

首先导入相关的包并根据图片路径导入

from matplotlib.offsetbox import (OffsetImage,AnnotationBbox)
import matplotlib.image as mpimg
arr_img = mpimg.imread('你的图片位置')

接着就可以根据坐标将图片添加到指定位置,详细的设置可以参考官方文档,下面的代码可以拿走就用,根据效果调整坐标即可

imagebox = OffsetImage(arr_img, zoom=0.2)
ab = AnnotationBbox(imagebox, [0.15,0.5],xybox=(170., -50.),xycoords='data',boxcoords="offset points",pad=0.5)
ax.add_artist(ab)

十、添加表格

有时只用图片很难传递更多的信息,幸运的是,在matplotlib中也可以使用plt.table来为图片添加一张与之对应的表格,只需要将你的数据按照指定格式传入即可。

下面是我在官方文档示例的基础上,添加渐变效果的表格

data = [[ 66386, 174296,  75131, 577908,  32015],[ 58230, 381139,  78045,  99308, 160454],[ 89135,  80552, 152558, 497981, 603535],[ 78415,  81858, 150656, 193263,  69638],[139361, 331509, 343164, 781380,  52269]]columns = ('Freeze', 'Wind', 'Flood', 'Quake', 'Hail')
rows = ['%d year' % x for x in (100, 50, 20, 10, 5)]
values = np.arange(0, 2500, 500)
value_increment = 1000
colors = plt.cm.BuPu(np.linspace(0, 0.5, len(rows)))
n_rows = len(data)index = np.arange(len(columns)) + 0.3
bar_width = 0.4plt.figure(figsize = (8,5),dpi =100)
y_offset = np.zeros(len(columns))
cell_text = []
for row in range(n_rows):plt.bar(index, data[row], bar_width, bottom=y_offset, color=colors[row])y_offset = y_offset + data[row]cell_text.append(['%1.1f' % (x / 1000.0) for x in y_offset])
colors = colors[::-1]
cell_text.reverse()the_table = plt.table(cellText=cell_text,rowLabels=rows,rowColours=colors,colLabels=columns,loc='bottom',cellColours=plt.cm.Blues(x))plt.subplots_adjust(left=0.2, bottom=0.2)plt.ylabel("Loss in ${0}'s".format(value_increment))
plt.yticks(values * value_increment, ['%d' % val for val in values])
plt.xticks([])
plt.title('Loss by Disaster')plt.show()

以上就是本文和大家总结的10个matplotlib小技巧,在未来的文章中我会继续分享相关知识,也希望大家可以在使用一些数据可视化工具时可以不断总结,不断进步。

精心总结了10个matplotlib绘图技巧,短小精悍,威力无穷相关推荐

  1. 精心总结了10个matplotlib绘图技巧,短小精悍,威力无穷!

    作者 | 刘早起       责编 | 欧阳姝黎 大家好,我是早起. 在使用 Python 进行数据可视化时,相信不论是什么工具,你都会发现有些操作/代码段会频繁的用到,这一点在matplotlib上 ...

  2. Matplotlib绘图技巧——自定义横轴

    今天分享一个Matplotlib中常用的一个技巧,自定义绘图横轴.数据如下: 直接绘图效果如下: 横轴很不直观,想将横轴数值替换成第一列的数据增强图的表达能力. 插曲:直接使用pandas读取时间数据 ...

  3. matplotlib 绘图技巧(一)

    目录 1.认识matplotlib 2.最简单的绘图例子 3. Figure的组成 4. 两种绘图接口 5. matplotlib的三层api 6. Artist的分类 7. matplotlib标准 ...

  4. matplotlib绘图的核心原理讲解(超详细)

    作者:Huang supreme 来源:https://blog.csdn.net/weixin_41261833/article/details/104299701 1.核心原理讲解 使用matpl ...

  5. 送你16个matplotlib绘图实用小技巧(附代码)

    来源:雪山飞猪 本文约2800字,建议阅读10分钟 本文为你分享16个matplotlib绘图实用小技巧. 标签:数据分析 1. 添加标题-title import numpy as npimport ...

  6. 16个matplotlib绘图实用小技巧!

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 本文主要 16 个 Matplotlib 绘图实用的小技巧. 1. 添加标题-ti ...

  7. Matplotlib实用绘图技巧总结

    在日常的业务数据分析 ,可视化是非常重要的步骤.这里总结了matplotlib常用绘图技巧,希望可以帮助大家更加更加高效的.美观的显示图表.作者:北山啦 Matplotlib 是 Python 的绘图 ...

  8. 第三十一期:大数据分析师学习入门,10个数据可视化技巧

    在这篇文章,我想和大家分享 10 个基本的中级和高级的绘图工具.我发现在现实生活中,当涉及到绘图解释你的数据时,这些工具非常有用. 作者:加米谷大数据来源:今日头条 我必须对你说实话:当我学习数据科学 ...

  9. Python基础知识学习笔记——Matplotlib绘图

    Python基础知识学习笔记--Matplotlib绘图 整理python笔记,以防忘记 文章目录 Python基础知识学习笔记--Matplotlib绘图 一.绘图和可视化 1.导入模块 2.一个简 ...

最新文章

  1. php性能分析工具 - xhprof的安装使用
  2. springboot集成mybatis-generator时候遇到的问题
  3. 使用druid连接池的超时回收机制排查连接泄露问题
  4. Struts2 校验数据问题
  5. linux route命令删除多余路由
  6. 全球及中国汽车空调冷凝器行业发展前景规模及投资战略决策报告2022-2027年
  7. 这 10 道 Java 测试题,据说阿里 P7 的正确率只有 50%
  8. WPF开源项目:WPF-ControlBase
  9. python中的常量可以修改吗_python实现不可修改的常量
  10. POJ 3984 迷宫问题
  11. Emacs中的Color Theme以及字体设置
  12. 开窗函数的意义与用法
  13. pip 通过pqi切换源到国内镜像
  14. C++基础::变量模板(variable template)
  15. html标签%3cli%3e分成两列,使用html自制玫瑰
  16. 肝完Alibaba这份面试通关宝典,我成功拿下今年第15个Offer
  17. 爱剪辑显示服务器繁忙,爱剪辑视频卡顿怎么回事 爱剪辑视频卡顿解决方法
  18. 高精度ua级恒流源_高精度恒流源电路图大全(十款高精度恒流源电路设计原理图详解)...
  19. ‘C:\Users\Administrator\Desktop\gitSpace\dj-2\dj\vue-manager-dj\node_modules\node-sass\vendor‘
  20. 正在学习C++的屑人麻了

热门文章

  1. 关系型数据库和非关系型数据库的区别与联系
  2. 【阿冈观点】超女和搏客,分析和攻击都是两码事!
  3. inverted反色
  4. 【摩客专访】简单易用的背后是吹毛求疵的追求 | 专访“方片收集”作者田飞
  5. LifeWORK青年技能分享 | 身为别人口中的资源大师,我是如何搜索电子资源的?
  6. 快来嗨!《笑傲江湖ol》圣诞嘉韶华狂欢开端!--国民网游戏
  7. 【国庆快乐】送给祖国母亲一朵玫瑰花(效果+代码+运行)
  8. 【编程实践】每日JK打卡程序操作说明
  9. Linux学习笔记(七)——shell语言
  10. ExpandableListView详解