在数据分析过程中,数据及模型可视化是无可避免的,同时这也是展示我们数据分析成果的最佳方式。因此,熟悉掌握绘图库的使用,对精进我们的数据分析技能起着不可替代的作用。

今天,我们就来了解一下python强大的绘图库——Matplotlib及Seaborn的使用。

首先我们先来了解一下这两个强大的库。

Matplotlib

支持 Python 语言的开源绘图库(可以说是python里最优秀的绘图库了),因为其支持丰富的绘图类型、简单的绘图方式以及完善的接口文档,深受 Python 工程师、科研学者、数据工程师等各类人士的喜欢。

Seaborn

是以 Matplotlib 为核心的高阶绘图库,无需经过复杂的自定义即可绘制出更加漂亮的图形,非常适合用于数据可视化探索。

(两者的联系?区别?)

Matplotlib 应该是基于 Python 语言最优秀的绘图库了,但是它也有一个十分令人头疼的问题,那就是太过于复杂了。3000 多页的官方文档,上千个方法以及数万个参数,属于典型的你可以用它做任何事,但又无从下手。尤其是,当你想通过 Matplotlib 调出非常漂亮的效果时,往往会伤透脑筋,非常麻烦。

Seaborn 基于 Matplotlib 核心库进行了更高阶的 API 封装,可以让你轻松地画出更漂亮的图形。Seaborn 的漂亮主要体现在配色更加舒服、以及图形元素的样式更加细腻。

一句话:

Matplotlib是python绘图的基础,而Seaborn是在基础上,针对实际工作进一步的精炼与提升~

我们还是要从基础开始说起:

1、首先,导入库:

from matplotlib import pyplot as plt

pyplot模块是 Matplotlib 最核心的模块,几乎所有样式的 2D 图形都是经过该模块绘制出来的。

在这里,将pyplot 缩写成 plt,是约定俗成的方式(大家都是这么用的~)

这里有个要注意的~

在Jupyter Notebook 里使用Matplotlib绘图时,要加上下面这一条代码:

%matplotlib inline

注:

这条命令的作用是将 Matplotlib 绘制的图形嵌入在当前页面中。而在桌面环境中绘图时,不需要添加此命令,而是在全部绘图代码之后追加plt.show( )。

2、画个最简单的折线图:

a=[1,2,3,4,5,6,7,6,5,4,3,2,1]

plt.plot(a)

在这里,我们导入了一个列表,Matplotlib 会默认将该列表作为y值,而x值会从0开始依次递增。而plt.plot( )是pyplot模块下绘制(折线图)的方法类。

一个简单的折线图就绘制出来了~

我们也可以自己定义横坐标:

a_x=[11,12,13,14,15,16,17,18,19,20,21,22,23]

plt.plot(a_x,a)

当然了,这是一个最最简单的例子,在 Matplotlib 中,还有各式各样很有趣的图,大部分图形样式的绘制方法都存在于pyplot模块中,我们只要更改后面的方法类名就可以更改图形的样式啦~

这里是一些常用的图:

柱状图:pyplot.bar

直方图:pyplot.barh

水平直方图:pyplot.broken_barh

等高线图:pyplot.contour

误差线:pyplot.errorbar

柱形图:pyplot.hist

水平柱状图:pyplot.hist2d

饼状图:pyplot.pie

量场图:pyplot.quiver

散点图:pyplot.scatter

我们还是以原来的数据为例,看看其他图的效果:

柱状图:

水平直方图:

我们还可以用plot画一个常见的正弦函数图:

import numpy as np

# 在 -2PI 和 2PI 之间等间距生成 1000 个值,也就是 X 坐标

x = np.linspace(-2*np.pi, 2*np.pi, 1000)

# 计算 y 坐标

y = np.sin(x)

plt.plot(x, y)

注意了~

尽管我们绘制出来的函数很像一条曲线,但实际上,在两点之间依旧是直线。这里看起来像曲线,是因为样本点相互挨得很近(我们取的是1000个点,因此会挨得很近)。

2、会最基本的绘制操作后,我们需要对我们的图形进行进一步的优化(让图更美观~)

在matplotlib里,我们可以通过设置参数,来达到美化的效果。

下面是在折线图里,一些比较常用的参数:

alpha=设置线型的透明度,从 0.0 到 1.0

color=设置线型的颜色

fillstyle=设置线型的填充样式

linestyle=设置线型的样式

linewidth=设置线型的宽度

marker=设置标记点的样式

想要了解更多参数的小伙伴可以到官网看看哦(包括查看其它图形的)~https://matplotlib.org/3.1.0/api/_as_gen/matplotlib.pyplot.plot.html​matplotlib.org

我们还是用原来的正弦函数来试验一下,这次再加上一条余弦函数。

x= np.linspace(-2 * np.pi, 2 * np.pi, 1000)

y1 = np.sin(x)

y2 = np.cos(x)

plt.plot(x, y1, color='r', linestyle='--', linewidth=2, alpha=0.7)

plt.plot(x, y2, color='g', linewidth=2)

看上去好像挺不错的样子~

下面我们用饼状图来做个小例子(效果会更明显哦~)

首先我们先简单地绘制一个饼图:

list_pie=[2,4,6,8,10]

plt.pie(list_pie)

下面,我们进行参数设置:

explode = (0, 0, 0.1, 0, 0.2) # 各类别的偏移半径

color = ['b', 'y', 'g', 'r', 'g']

plt.pie(list_pie, colors=color, explode=explode,

shadow=True, autopct='%1.1f%%') #设置阴影,偏移度,颜色

# 饼状图呈正圆

plt.axis('equal')

对比一下,是不是瞬间高大上了~

3、同时绘制多个图形(组合图形)

x=[1,2,3,4,5,6,7]

y1=[3,6,9,12,9,6,3]

y2=[2,9,11,8,6,4,3]

plt.bar(x, y1)

plt.plot(x, y2, '-o', color='r')

在这里,y1是柱状图,y2是折线图。只要将两个图形的代码放置在一起就可以绘制成组合图形了。

注意~

并不是任何的代码放在一起都是组合图。两张图的横坐标必须共享,才能够被 Matplotlib 自动判断为组合图效果~

4、确立图形位置

首先我们来看看这个图:

和我们日常的画架结构一样,在Matplotlib 中,也是有类似“画板”和“画布”的区别的。

figure:相当于绘画用的画板,

axes:相当于铺在画板上的画布。

也就是说,在同一块画板上,我们可以设置不同的画布,用来展示不同的图片。

让我们先来看一个小例子:

x= np.linspace(-2 * np.pi, 2 * np.pi, 1000)

y1 = np.sin(x)

y2 = np.cos(x)

fig = plt.figure() # 新建画板

axes1 = fig.add_axes([0.1, 0.1, 0.9, 0.9]) # 大画布

axes2 = fig.add_axes([0.2, 0.2, 0.3, 0.2]) # 小画布

axes1.plot(x, y1, color='r', linestyle='--', linewidth=2, alpha=0.7) # 大画布

axes2.plot(x, y2, color='g', linewidth=2) # 小画布

可以看到,我们的图形被放在了不同大小的画布上。

那如何控制我们的画布大小及位置呢?

大家可以看下图中add_axes的参数设置:

除此之外也可以看到,add_axes的主要功能,就是向我们设置的画板figure中添加画布。

当然,还有一种更常见的添加画布的方法,就是——subplots( )。

比如,在subplots(2,2,1 )中,

第一、二个参数代表共创建了2*2个画布,其中subplots(2,2,1 )表示第一个画布。

我们来看看下面这个例子:(注意看subplots的设置哦~)

x= np.linspace(-2 * np.pi, 2 * np.pi, 1000)

y1 = np.sin(x)

y2 = np.cos(x)

plt.subplot(2,1,1)

plt.plot(x, y1, color='r', linestyle='--', linewidth=2, alpha=0.7)

plt.subplot(2,1,2)

plt.plot(x, y2, color='g', linewidth=2)

5、如何添加图表题目、坐标轴标题、以及图例等图表基本内容。

我们直接从例子出发:

fig, axes = plt.subplots()

plt.rcParams['font.sans-serif']=['SimHei']

axes.set_xlabel('X轴') # 横坐标标题

axes.set_ylabel('Y轴') #纵坐标标题

axes.set_title('三角函数') # 图表标题

x= np.linspace(-2 * np.pi, 2 * np.pi, 1000)

y1 = np.sin(x)

y2 = np.cos(x)

axes.plot(x, y1, color='r', linestyle='--', linewidth=2, alpha=0.7)

axes.plot(x, y2, color='g', linewidth=2)

axes.legend(["sin", "cos"], loc=0) # 图例

set_xlabel:横坐标标题

set_ylabel:纵坐标标题

set_title: 图表标题

loc:标记图例位置,1,2,3,4依次代表:右上角、左上角、左下角,右下角;0代表自适应。

效果图:

注意~

在这里我多添加了一条代码:

plt.rcParams['font.sans-serif']=['SimHei']

这是因为我们输出的图例等包含中文,需要对格式进行设置。

然后,也有另一种方式,下面是我以前做的另一个图:

import matplotlib

from matplotlib import pyplot as plt

myfont = matplotlib.font_manager.FontProperties(fname='C:\Windows\Fonts\simsun.ttc')

y_beijing=[8180.900,7659.100,8130.400,7199.500,7818.500,7638.200,7969.500,8225.400,8266.400,8444.600,8103.500,8119.700]

x=range(1,13)

plt.figure(figsize=(8,6),dpi=80,num=4)

plt.plot(x,y_beijing,label='旅客人数月变化',color='yellow')

xtick_labels=['{}月'.format(i) for i in x]

plt.xticks(x,xtick_labels,FontProperties=myfont)

plt.yticks( range(7000,8500,500))

plt.title('北京机场吞吐量',FontProperties=myfont,fontsize=15)

plt.xlabel('月份',FontProperties=myfont,fontsize=15)

plt.ylabel('旅客人数/千人',FontProperties=myfont,fontsize=15)

plt.grid(alpha=0.3)

for x, y in zip(x, y_beijing):

plt.text(x, y+0.4, '%.0f'%y, ha='center', va='bottom', fontsize=10)

plt.legend(prop=myfont)

plt.show()

可以看到,代码有一点点不同,但是仍然达到同样的效果。

其中,myfont=matplotlib.font_manager.FontProperties(fname='C:\Windows\Fonts\simsun.ttc')这条代码也是由于中文输入的原因。

6、如何规范我们画图的习惯

1、通过plt.figure()或者plt.subplots()管理一个完整的图形对象。

2、在图形对象的基础上,再添加图表题目、坐标轴标题、以及图例等图表基本内容。

以上便是的内容,感谢大家的细心阅读,同时欢迎感兴趣的小伙伴一起讨论、学习,想要了解更多内容的可以看我的其他文章,同时可以持续关注我的动态~

python绘图库seaborn_python绘图库——Matplotlib及Seaborn使用(入门篇1)相关推荐

  1. python绘图库seaborn_python绘图库——Matplotlib及Seaborn使用(入门篇2)

    在数据分析过程中,数据及模型可视化是无可避免的,同时这也是展示我们数据分析成果的最佳方式.因此,熟悉掌握绘图库的使用,对精进我们的数据分析技能起着不可替代的作用. 在上一篇中,我们掌握了Matplot ...

  2. Python实现《谁说菜鸟不会数据分析(入门篇)》的案例

    这段时间在学习Excel和Python相关内容,Excel数据分析入门有一本<谁说菜鸟不会数据分析(入门篇)>,内容细致,简洁易懂,注重培养分析的思维而不仅仅是告知方法.在学习Python ...

  3. python簇状柱形图_Python:matplotlib 和 Seaborn 之簇状柱形图、分面 (三十五)

    簇状柱形图 为了描绘两个分类变量之间的关系,我们可以将在上节课见到的单变量条形图扩展为簇状柱形图.和标准条形图一样,我们依然需要描绘每组的数据点计数,但是每组现在是两个变量的标签组合.因此我们需要按照 ...

  4. python安装绘图库matplotlib_python绘图库Matplotlib的安装

    导读热词 本文简单介绍了Python绘图库Matplotlib的安装,简介如下: matplotlib是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地 进行 ...

  5. python安装绘图库_python绘图库Matplotlib的安装

    本文简单介绍了Python绘图库Matplotlib的安装,简介如下: matplotlib是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地 进行制图.Ma ...

  6. matplotlib中文文档_python绘图库——Matplotlib及Seaborn使用(入门篇1)

    在数据分析过程中,数据及模型可视化是无可避免的,同时这也是展示我们数据分析成果的最佳方式.因此,熟悉掌握绘图库的使用,对精进我们的数据分析技能起着不可替代的作用. 今天,我们就来了解一下python强 ...

  7. python画画用哪库好_小白开始学Python最著名的绘图库

    原标题:小白开始学Python最著名的绘图库 这是菜鸟学Python的第101篇原创文章 数据分析里面可视化是重要的环节,辛苦把数据采集,然后经历了很多工序的清洗之后,最后要展现给用户,最好的方法就是 ...

  8. r语言ggplot2 多线图绘制图例_plotnine: Python版的ggplot2作图库

    腾讯课堂 | Python网络爬虫与文本数据分析 同样的基本作图任务,plotnine比matplotlib和seaborn代码量少,更美观.所以我又重新发一遍,大家可以先收藏起来,后面总有用到的时候 ...

  9. Python彩色图片转手绘风格

    Python彩色图片转手绘风格 from PIL import Image # 图像的手绘 """黑白风格边界的位置比较重相同或相近色彩趋近于白色咯有光源效果 " ...

最新文章

  1. WINDOWS SERVER 2003 组策略应用
  2. vc采集网页内frame框架下所有元素(不指定具体table/form)
  3. python测试用例怎么写_Python单元测试unittest的具体使用示例
  4. andorid 自定义seekbar
  5. 史上最全Vim快捷键键位图(入门到进阶)
  6. xcode于Archive当产生安装包遇到ld: library not found for -lPods
  7. SourceInsight配置
  8. 几个python小程序
  9. 【BZOJ - 3224】普通平衡树(Splay模板题)
  10. unittest读取ddt之-元组,嵌套元组,字典
  11. 刘强东:京东必定会击败阿里巴巴
  12. 嵌入式Linux系统编程学习之一目录结构
  13. 141.3. 单机安装 CentOS 5 + hadoop-0.20.0
  14. Python爬虫实战,DecryptLogin模块,Python模拟登录微博实现批量删除微博
  15. 超五类屏蔽双绞线和计算机电缆区别,超五类单屏网线和六类单屏蔽网线的区别是什么?...
  16. Python使用Plotly绘图工具,绘制散点图、线形图
  17. st_contains
  18. 二级路由dhcp关闭连不上wifi_无线宽带路由器除了WiFi上网还能有什么用,如何正确设置DHCP服务...
  19. InstructGPT高效实践——【DeepSpeed-Chat】源码详解(2/3):Supervised Finetuning、Reward Model Finetuning
  20. 计算机中丢失d3dcompiler_47,玩游戏提示缺少D3DCompiler_47.dll文件怎么解决?

热门文章

  1. java控制台输出版多人聊天室
  2. Canvas 的clearRect()方法与beginPath()方法
  3. [转载]打工辛酸路:我是一朵飘零的花之79
  4. C语言中的输入和输出
  5. 在php中line的意思,CAD如何使用XLINE命令,cad中xline是什么意思
  6. @PreAuthorize 不起作用
  7. 面经:2019网易游戏客户端实习生
  8. Qt 构建和解析Json格式数据
  9. 徐有高【TTG多玩自购】PS3《英雄传说 闪之轨迹》
  10. mysql 合并查询成绩_SQL如何合并查询结果