一篇文章掌握Python机器学习绘图库matplotlib(二)

简介: 一篇文章掌握Python机器学习绘图库matplotlib(二)

饼图


折线图可以看清楚数据的走势涨跌以及升迁,柱状图可以看清楚高低长短以及大小,但是它们都无法确认数据的百分比分布情况,所以这个时候就需要饼图,我们先来看一看饼图的简单用法:

fig = plt.figure()  # 获取画板
ax = fig.add_subplot(111)  # 获取画纸
labels = ['娱乐', '育儿', '饮食', '房贷', '交通', '其它']
sizes = [2, 5, 12, 70, 2, 9]
plt.pie(sizes, labels=labels, autopct='%1.1f%%', shadow=False, startangle=150)
plt.title("饼图示例-8月份家庭支出")
plt.show()


在matplotlib包中,我们使用饼图的方法是pie,而且百分比也不用我们自己来计算,pie方法会自动帮我们计算数组的综合,然后在分别每个数占据的比例,上面的代码显示效果如下:


饼图的详细用法

同样上面都是一些最基本的用法,我们实际的项目中可能还需要饼图的其他各种详细的设置,所以,我们先来看看饼图详细用法的一些代码:

fig = plt.figure()  # 获取画板
ax = fig.add_subplot(111)  # 获取画纸
labels = ['娱乐', '育儿', '饮食', '房贷', '交通', '其它']
sizes = [2, 5, 12, 70, 2, 9]
explode = (0,0,0,0.1,0,0)
'''
x:指定绘图的数据;
explode:指定饼图某些部分的突出显示,即呈现爆炸式;
labels:为饼图添加标签说明,类似于图例说明;
colors:指定饼图的填充色;
autopct:自动添加百分比显示,可以采用格式化的方法显示;
pctdistance:设置百分比标签与圆心的距离;
shadow:是否添加饼图的阴影效果;
labeldistance:设置各扇形标签(图例)与圆心的距离;
startangle:设置饼图的初始摆放角度;
radius:设置饼图的半径大小;
counterclock:是否让饼图按逆时针顺序呈现;
wedgeprops:设置饼图内外边界的属性,如边界线的粗细、颜色等;
textprops:设置饼图中文本的属性,如字体大小、颜色等;
center:指定饼图的中心点位置,默认为原点
frame:是否要显示饼图背后的图框,如果设置为True的话,需要同时控制图框x轴、y轴的范围和饼图的中心位置;
'''
plt.pie(sizes,explode=explode, labels=labels, autopct='%1.1f%%', shadow=False, startangle=90)
'''
legend画出右上角显示的颜色文字配对详情
loc:图例所有figure位置
bbox_to_anchor:指定图例在轴的位置
fontsize:文字大小
borderaxespad:轴与图例边框之间的距离
frameon:是否去掉图例边框,false代表是
edgecolor:设置图例边框颜色
facecolor:设置图例背景颜色,若无边框,参数无效
handletextpad:图例句柄和文本之间的间距
handlelength:图例句柄的长度
handleheight:图例句柄的高度
labelspacing:图例条目之间的垂直间距
borderpad:图例边框的内边距
framealpha:控制图例框架的 Alpha 透明度
shadow:控制是否在图例后面画一个阴影
'''
ax.legend(loc='best', bbox_to_anchor=(1.1, 1.05), fontsize=8, borderaxespad=0.3,labelspacing=2.0)
plt.title("饼图示例-8月份家庭支出")
plt.show()


上面都是饼图常用的参数,其中有些参数并不是饼图用的所以这里没有讲解,因为legend有很多参数,而且大部分还是散点图用的参数,我们将马上讲解散点图,我们看看上面代码实现的效果图:


散点图


以上三种图都是我们生活中常见的图,比如财务报表,理财开支,生活贷款以及科学计算都会用到上面三种图形,但是有一种图是科学计算中独用的,那就是散点图,生活中基本见不到这种图,但从事科学研究的大佬肯定经常用到,下面我们来看看它的简单用法:

fig = plt.figure()  # 获取画板
ax = fig.add_subplot(111)  # 获取画纸
N = 1000
x = np.random.randn(N)
y = np.random.randn(N)
plt.scatter(x, y)
plt.show()


在matplotlib包中,散点图的方法是scatter,上面的代码我们使用numpy库随机生成了1000具有标准正态分布的数据,定位X,Y的坐标,然后显示出来,显示的效果如下图所示:


散点图的详细用法

当然这是散点图最基本的用法,下面我们来看看散点图的详细用法,这里我们不和上面一样笼统的代码注释讲解,我们将分别讲解散点图的方法参数,首先也就是我们创建散点图的方法scatter它的参数:

scatter(x, y, s=None, c=None, marker=None, 
cmap=None, norm=None, vmin=None, 
vmax=None, alpha=None, linewidths=None, 
verts=None, edgecolors=None, 
hold=None, data=None, **kwargs)


参数的意思分别如下:

x,y:数据坐标
    s:原点的大小,也需要是一个list数组的类型,设置每个点的大小
    c:颜色,可以单独设置(单独设置传入list数组),可以整体设置
    marker:`〜matplotlib.markers.MarkerStyle`,可选,默认值:'o'
        请参阅`〜matplotlib.markers`以获取有关不同的更多信息
        标记分散支持的样式。 `marker`可以是
        该类的实例或特定文本的简写
        标记。
    cmap:`〜matplotlib.colors.Colormap`,可选,默认:无
        一个`〜matplotlib.colors.Colormap`实例或注册名称。
        `cmap`仅在`c`是浮点数组时使用。如果没有,
        默认为rc`image.cmap`。
    norm:`〜matplotlib.colors.Normalize`,可选,默认:无
        `〜matplotlib.colors.Normalize`实例用于缩放
        亮度数据为0,1。`norm`只有在`c`是一个数组时才被使用
        彩车。如果`None',则使用默认值:func:`normalize`。
    vmin,vmax:标量,可选,默认值:无
        `vmin`和`vmax`与`norm`结合使用来标准化
        亮度数据。如果其中任何一个都是`无',那么最小和最大的
        使用颜色数组。请注意,如果你通过一个“规范”实例,你的
        `vmin`和`vmax`的设置将被忽略。
    alpha:透明度
    linewidths:标量或array_like,可选,默认值:无
        如果无,则默认为(lines.linewidth,)。
    verts:(x,y)的序列,可选
        如果`marker`为None,这些顶点将用于
        构建标记。标记的中心位于
        在(0,0)为标准化单位。整体标记重新调整
        由``s``完成。
     edgecolors :边框颜色


比如我下面这段代码设置了每个点的大小,颜色,边框,透明度,样式为右尖三角形。代码如下:


fig = plt.figure()  # 获取画板
ax = fig.add_subplot(111)  # 获取画纸
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
s = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
color = ['r', 'y', 'k', 'g', 'm', 'r', 'y', 'k', 'g', 'm']
plt.scatter(x, y, color=color, marker='>',
            s=s, edgecolor='black', alpha=0.5)
for x, y in zip(x, y):
    plt.annotate('(%s,%s)' % (x, y), xy=(x, y), xytext=(0, -10), textcoords='offset points', ha='center', va='top')
plt.show()


可以看到我们设置的点其实都在一条直线上,而且我们也同样使用了annotate方法,标记点的坐标显示在图像上,前面的有些方法,在散点图中依旧可以用,包括legend方法,这段代码显示的效果如下:

对于matplotlib包常用的绘图操作来说,上面基本都讲解到了,其他的都是一些比较偏门的知识,感兴趣的可以查询文档更深入的了解,但学会了上面的绘图代码,基本上大多数情况下都能轻松应付自如,好了matplotlib库就讲解到这里,觉得有用的可以点个赞支持一下,谢谢。

相关文章
|
6天前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
在数字化时代,数据分析至关重要,而Python凭借其强大的数据处理能力和丰富的库支持,已成为该领域的首选工具。Python作为基石,提供简洁语法和全面功能,适用于从数据预处理到高级分析的各种任务。Pandas库则像是神兵利器,其DataFrame结构让表格型数据的处理变得简单高效,支持数据的增删改查及复杂变换。配合Matplotlib这一数据可视化的魔法棒,能以直观图表展现数据分析结果。掌握这三大神器,你也能成为数据分析领域的高手!
20 2
|
4天前
|
Python
Python MatplotlibDeprecationWarning Matplotlib 3.6 and will be removed two minor releases later
Python MatplotlibDeprecationWarning Matplotlib 3.6 and will be removed two minor releases later
11 3
|
5天前
|
数据可视化 数据挖掘 API
Python数据分析:数据可视化(Matplotlib、Seaborn)
数据可视化是数据分析中不可或缺的一部分,通过将数据以图形的方式展示出来,可以更直观地理解数据的分布和趋势。在Python中,Matplotlib和Seaborn是两个非常流行和强大的数据可视化库。本文将详细介绍这两个库的使用方法,并附上一个综合详细的例子。
|
6天前
|
数据可视化 数据挖掘 开发者
揭秘数据可视化的魔法:如何用Python的Matplotlib库将枯燥数字变成引人入胜的故事,轻松俘获观众的心!
【8月更文挑战第12天】在数据科学中,将复杂数据转化为直观图形至关重要。Python凭借其强大的库支持,在数据可视化方面表现卓越,其中Matplotlib更是佼佼者。它功能全面且易于使用,已成为Python数据可视化的标配。通过简单命令即可安装Matplotlib。示例中,我们展示了如何绘制基本线图、散点图及多数据集对比图,并介绍了如何添加标题、标签和图例等元素。Matplotlib还支持丰富的图表定制选项,如颜色、线型等,帮助用户创建专业级图表。无论是数据分析还是结果展示,掌握Matplotlib都能显著提升数据表达能力。
|
12天前
|
Python
Python函数式编程:你真的懂了吗?理解核心概念,实践高阶技巧,这篇文章带你一次搞定!
【8月更文挑战第6天】本文介绍了Python中的函数式编程,探讨了高阶函数、纯函数、匿名函数、不可变数据结构及递归等核心概念。通过具体示例展示了如何利用`map()`和`filter()`等内置函数处理数据,解释了纯函数的一致性和可预测性特点,并演示了使用`lambda`创建简短函数的方法。此外,文章还强调了使用不可变数据结构的重要性,并通过递归函数实例说明了递归的基本原理。掌握这些技巧有助于编写更清晰、模块化的代码。
14 3
|
18天前
|
存储 数据可视化 Python
Python中的数据可视化:使用Matplotlib和Pandas探索数据
【7月更文挑战第31天】 在数据科学的世界里,可视化是理解复杂数据集的关键。本文将引导你通过Python的Matplotlib库和Pandas库来揭示数据背后的故事。我们将一起构建图表,从简单的线图到复杂的热图,每一步都将用代码示例来丰富你的理解。文章不仅仅是展示如何绘制图表,更是一次深入探索数据结构和模式的旅程。
40 8
|
25天前
|
数据可视化 数据挖掘 Python
数据界的颜值担当!Python数据分析遇上Matplotlib、Seaborn,可视化美出新高度!
【7月更文挑战第24天】在数据科学领域,Python的Matplotlib与Seaborn将数据可视化升华为艺术,提升报告魅力。Matplotlib作为基石,灵活性强,新手友好;代码示例展示正弦波图的绘制与美化技巧。Seaborn针对统计图表,提供直观且美观的图形,如小提琴图,增强数据表达力。两者结合,创造视觉盛宴,如分析电商平台销售数据时,Matplotlib描绘趋势,Seaborn揭示类别差异,共塑洞察力强的作品,使数据可视化成为触动人心的艺术。
40 7
|
25天前
|
数据可视化 数据挖掘 Python
惊呆了!Python数据分析师如何用Matplotlib、Seaborn秒变数据可视化大师?
【7月更文挑战第24天】在数据驱动时代,分析师穿梭数字海洋揭示故事,数据可视化如魔法棒般将复杂数据转化成直观图形。Matplotlib与Seaborn成为黄金搭档:前者作为基础绘图库提供高度定制化选项;后者在其上构建,简化复杂图表绘制并增强美观度。两者结合,助力分析师高效完成任务。
22 6
|
25天前
|
JSON API 数据库
从零到英雄?一篇文章带你搞定Python Web开发中的RESTful API实现!
【7月更文挑战第24天】在Python的Web开发领域,掌握RESTful API至关重要。利用Flask框架,可迅速搭建API,进行用户管理的CRUD操作。需先安装Flask (`pip install Flask`),然后定义路由处理GET、POST、PUT、DELETE请求,实现用户数据的检索、创建、更新和删除。
41 5
|
27天前
|
数据可视化 数据挖掘 开发者
数据可视化新纪元!Python + Matplotlib + Seaborn,让你的数据故事生动起来!
【7月更文挑战第23天】在数据驱动时代,Python通过Matplotlib与Seaborn引领数据可视化新纪元。Matplotlib基础强大,提供广泛绘图选项;Seaborn则简化流程,图表更美观,适合快速可视化。两者结合,轻松应对复杂定制需求,将数据转化为生动故事,支持决策与交流。
24 6