一篇文章掌握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库就讲解到这里,觉得有用的可以点个赞支持一下,谢谢。

相关文章
|
4天前
|
移动开发 数据可视化 数据挖掘
利用Python实现数据可视化:以Matplotlib和Seaborn为例
【10月更文挑战第37天】本文旨在引导读者理解并掌握使用Python进行数据可视化的基本方法。通过深入浅出的介绍,我们将探索如何使用两个流行的库——Matplotlib和Seaborn,来创建引人入胜的图表。文章将通过具体示例展示如何从简单的图表开始,逐步过渡到更复杂的可视化技术,帮助初学者构建起强大的数据呈现能力。
|
2天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
11 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
4天前
|
机器学习/深度学习 数据采集 人工智能
探索机器学习:从理论到Python代码实践
【10月更文挑战第36天】本文将深入浅出地介绍机器学习的基本概念、主要算法及其在Python中的实现。我们将通过实际案例,展示如何使用scikit-learn库进行数据预处理、模型选择和参数调优。无论你是初学者还是有一定基础的开发者,都能从中获得启发和实践指导。
11 2
|
6天前
|
机器学习/深度学习 数据采集 搜索推荐
利用Python和机器学习构建电影推荐系统
利用Python和机器学习构建电影推荐系统
20 1
|
6天前
|
机器学习/深度学习 算法 PyTorch
用Python实现简单机器学习模型:以鸢尾花数据集为例
用Python实现简单机器学习模型:以鸢尾花数据集为例
19 1
|
11天前
|
数据可视化 JavaScript 前端开发
Python中交互式Matplotlib图表
【10月更文挑战第20天】Matplotlib 是 Python 中最常用的绘图库之一,但默认生成的图表是静态的。通过结合 mpld3 库,可以轻松创建交互式图表,提升数据可视化效果。本文介绍了如何使用 mpld3 在 Python 中创建交互式散点图、折线图和直方图,并提供了详细的代码示例和安装方法。通过添加插件,可以实现缩放、平移和鼠标悬停显示数据标签等交互功能。希望本文能帮助读者掌握这一强大工具。
35 5
|
2月前
|
Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
|
2月前
|
数据可视化 数据挖掘 Linux
震撼发布!Python数据分析师必学,Matplotlib与Seaborn数据可视化实战全攻略!
在数据科学领域,数据可视化是连接数据与洞察的桥梁,能让复杂的关系变得直观。本文通过实战案例,介绍Python数据分析师必备的Matplotlib与Seaborn两大可视化工具。首先,通过Matplotlib绘制基本折线图;接着,使用Seaborn绘制统计分布图;最后,结合两者在同一图表中展示数据分布与趋势,帮助你提升数据可视化技能,更好地讲述数据故事。
49 1
|
2月前
|
存储 数据可视化 数据挖掘
揭秘!Matplotlib与Seaborn联手,如何让Python数据分析结果一目了然,惊艳全场?
在数据驱动时代,高效直观地展示分析结果至关重要。Python中的Matplotlib与Seaborn是两大可视化工具,结合使用可生成美观且具洞察力的图表。本文通过分析某电商平台的商品销量数据集,展示了如何利用这两个库揭示商品类别与月份间的销售关系及价格对销量的影响。首先使用Matplotlib绘制月份销量分布直方图,再借助Seaborn的箱线图进一步探索不同类别和价格区间下的销量稳定性。
63 10
|
2月前
|
数据可视化 Python
Python中的数据可视化:使用Matplotlib绘制图表
【9月更文挑战第11天】在这篇文章中,我们将探索如何使用Python的Matplotlib库来创建各种数据可视化。我们将从基本的折线图开始,然后逐步介绍如何添加更多的功能和样式,以使您的图表更具吸引力和信息量。无论您是数据科学家、分析师还是任何需要将数据转化为视觉形式的专业人士,这篇文章都将为您提供一个坚实的起点。让我们一起潜入数据的海洋,用视觉的力量揭示其背后的故事。
55 16