数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)—Matplotlib—数据可视化高级(七)

简介: 你好,感谢你能点进来本篇博客,请不要着急退出,相信我,如果你有一定的 Python 基础,想要学习 Python数据分析的三大库:numpy,pandas,matplotlib;这篇文章不会让你失望,本篇博客是 【AIoT阶段一(下)】 的内容:Python数据分析,

2.2 文本、注释、箭头

🚩常用函数如下:

Pyplot函数 API方法 描述
text() mpl.axes.Axes.text() 在Axes对象的任意位置添加文字
xlabel() mpl.axes.Axes.set_xlabel() 为X轴添加标签
ylabel() mpl.axes.Axes.set_ylabel() 为Y轴添加标签
title() mpl.axes.Axes.set_title() 为Axes对象添加标题
legend() mpl.axes.Axes.legend() 为Axes对象添加图例
annnotate() mpl.axes.Axes.annotate() 为Axes对象添加注释(箭头可选)
figtext() mpl.figure.Figure.text() 在Figure对象的任意位置添加文字
suptitle() mpl.figure.Figure.suptitle() 为Figure对象添加中心化的标题

2.2.1 文本

import numpy as np
import matplotlib.pyplot as plt
# 字体属性
font = {'fontsize': 20,
        'family': 'KaiTi',
        'color':  'red',
        'weight': 'bold'}  # bold表示字体加粗
x = np.linspace(0.0, 5.0, 100)
y = np.cos(2 * np.pi * x) * np.exp(-x)
plt.figure(figsize = (9, 6))
plt.plot(x, y, 'k')  # k代表黑色
# 视图的标题
plt.title('exponential decay', fontdict = font, pad = 20)
# figure的大标题
plt.suptitle('指数衰减', y = 1.05, fontdict = font, fontsize = 30)
# 向图片中绘制文本
plt.text(x = 2, y = 0.65, # 横纵坐标位置
         s = r'$\cos(2 \pi t) \exp(-t)$', # 文本内容
         fontsize = 25)   # 文本大小
plt.xlabel('time (s)')
plt.ylabel('voltage (mV)')
plt.show()

36.png

2.2.2 箭头

import matplotlib.pyplot as plt
import numpy
# 随机生成数字,10行2列(x,y)
loc = np.random.randint(0, 10,size = (10, 2))
plt.figure(figsize=(10, 10))
# 画图: loc[:, 0]:所有行都获取,索引0--->横坐标
#       loc[:, 1]:所有行都获取,索引1--->纵坐标
#       g*:g代表的是绿色,*代表的是点的形状是五角星
#       ms = 20:点的大小
plt.plot(loc[:, 0], loc[:, 1], 'g*', ms = 20)
plt.grid(True)
# 路径
way = np.arange(10) # 0、1、2、...、9索引
np.random.shuffle(way) # 洗牌,打乱顺序
# 开始连点:0-->1-->2-->...-->9
# for 循环:少一个:10个点连9条线
for i in range(0, len(way) - 1):
    start = loc[way[i]]    # 起点
    end = loc[way[i + 1]]  # 终点
    # 画箭头:
    plt.arrow(start[0], start[1], # x = start[0], y = start[1]:起点的(x, y)
              end[0] - start[0],  # 水平方向上移动的距离
              end[1] - start[1],  # 竖直方向上移动的距离
              head_width = 0.2, lw = 2,# 箭头长度,箭尾线宽
              length_includes_head = True) # 长度计算包含箭头箭尾
    # 绘制编号:0 1 2 3... 8
    plt.text(start[0], start[1], s = i, fontsize = 18, color = 'red')
    # 绘制编号:9
    if i == len(way) - 2:
        plt.text(end[0], end[1], s = i + 1, fontsize = 18, color = 'red')

37.png

2.2.3 注释

import numpy as np
import matplotlib.pyplot as plt
# 数据创建
fig, ax = plt.subplots()
x = np.arange(0.0, 5.0, 0.01)
y = np.cos(2 * np.pi * x)
line, = ax.plot(x, y, lw = 2)
# 注释:
ax.annotate('local max',       # 文本内容
            xy = (2, 1),       # 箭头指向位置
            xytext = (3, 1.5), # 文本位置
            # 箭头属性
            arrowprops = dict(facecolor = 'black', # 箭头的颜色
                              shrink = 0.05)) # 箭头两端收缩的百分比(占总长)
ax.annotate('local min',
            xy = (2.5, -1),
            xytext = (4, -1.8),
            arrowprops = dict(facecolor = 'black',
                              width = 2,       # 箭头宽度
                              headwidth = 10,  # 箭头头部宽度
                              headlength = 10, # 箭头头部长度
                              shrink = 0.1)) # 箭头两端收缩的百分比(占总长)
ax.annotate('median',
            xy = (2.25, 0),
            xytext = (0.5, -1.8),
            arrowprops = dict(arrowstyle = '-|>'), # 箭头样式
            # 按下 Shift+Tab查看提示:-|>:head_length=0.4,head_width=0.2
            fontsize = 20)
# y轴范围调为(-2, 2)
ax.set_ylim(-2, 2)  

38.png

2.2.4 注释箭头连接形状

image.png

import matplotlib.pyplot as plt
def annotate_con_style(ax, connectionstyle):
    x1, y1 = 3,2
    x2, y2 = 8,6
    ax.plot([x1, x2], [y1, y2], ".")
    ax.annotate(text = '',
                xy = (x1, y1),     # 相当于B点,arrow head
                xytext = (x2, y2), # 相当于A点,arrow tail
                arrowprops = dict(arrowstyle = '->', color = 'red',
                                shrinkA = 5,shrinkB = 5,
                                connectionstyle = connectionstyle))
    ax.text(.05, 0.95, connectionstyle.replace(",", "\n"),
            transform = ax.transAxes, # 相对坐标
            ha = "left", va = "top")  # 指定对齐方式
# 常用箭头连接样式
fig, axs = plt.subplots(3, 5, figsize = (9, 6))
annotate_con_style(axs[0, 0], "angle3,angleA=90,angleB=0")
annotate_con_style(axs[1, 0], "angle3,angleA=0,angleB=90")
annotate_con_style(axs[2, 0], "angle3,angleA = 0,angleB=150")
annotate_con_style(axs[0, 1], "arc3,rad=0.")
annotate_con_style(axs[1, 1], "arc3,rad=0.3")
annotate_con_style(axs[2, 1], "arc3,rad=-0.3")
annotate_con_style(axs[0, 2], "angle,angleA=-90,angleB=180,rad=0")
annotate_con_style(axs[1, 2], "angle,angleA=-90,angleB=180,rad=5")
annotate_con_style(axs[2, 2], "angle,angleA=-90,angleB=10,rad=5")
annotate_con_style(axs[0, 3], "arc,angleA=-90,angleB=0,armA=30,armB=30,rad=0")
annotate_con_style(axs[1, 3], "arc,angleA=-90,angleB=0,armA=30,armB=30,rad=5")
annotate_con_style(axs[2, 3], "arc,angleA=-90,angleB=0,armA=0,armB=40,rad=0")
annotate_con_style(axs[0, 4], "bar,fraction=0.3")
annotate_con_style(axs[1, 4], "bar,fraction=-0.3")
annotate_con_style(axs[2, 4], "bar,angle=180,fraction=-0.2")
for ax in axs.flat:
    # 设置轴域刻度
    ax.set(xlim = (0, 10), ylim = (0, 10), xticks = [], yticks = [], aspect = 1)
fig.tight_layout(pad = 0.2)

39.png


目录
相关文章
|
4月前
|
数据可视化 数据挖掘 Linux
震撼发布!Python数据分析师必学,Matplotlib与Seaborn数据可视化实战全攻略!
在数据科学领域,数据可视化是连接数据与洞察的桥梁,能让复杂的关系变得直观。本文通过实战案例,介绍Python数据分析师必备的Matplotlib与Seaborn两大可视化工具。首先,通过Matplotlib绘制基本折线图;接着,使用Seaborn绘制统计分布图;最后,结合两者在同一图表中展示数据分布与趋势,帮助你提升数据可视化技能,更好地讲述数据故事。
71 1
|
15天前
|
数据可视化 数据挖掘 开发者
Pandas数据可视化:matplotlib集成(df)
Pandas 是 Python 中强大的数据分析库,Matplotlib 是常用的绘图工具。两者结合可方便地进行数据可视化,帮助理解数据特征和趋势。本文从基础介绍如何在 Pandas 中集成 Matplotlib 绘制图表,如折线图、柱状图等,并深入探讨常见问题及解决方案,包括图表显示不完整、乱码、比例不合适、多子图布局混乱、动态更新图表等问题,提供实用技巧和代码示例。掌握这些方法后,你将能更高效地处理数据可视化任务。
46 9
|
2月前
|
移动开发 数据可视化 数据挖掘
利用Python实现数据可视化:以Matplotlib和Seaborn为例
【10月更文挑战第37天】本文旨在引导读者理解并掌握使用Python进行数据可视化的基本方法。通过深入浅出的介绍,我们将探索如何使用两个流行的库——Matplotlib和Seaborn,来创建引人入胜的图表。文章将通过具体示例展示如何从简单的图表开始,逐步过渡到更复杂的可视化技术,帮助初学者构建起强大的数据呈现能力。
|
3月前
|
数据可视化 数据挖掘 API
Python中的数据可视化利器:Matplotlib与Seaborn对比解析
在Python数据科学领域,数据可视化是一个重要环节。它不仅帮助我们理解数据,更能够让我们洞察数据背后的故事。本文将深入探讨两种广泛使用的数据可视化库——Matplotlib与Seaborn,通过对比它们的特点、优劣势以及适用场景,为读者提供一个清晰的选择指南。无论是初学者还是有经验的开发者,都能从中找到有价值的信息,提升自己的数据可视化技能。
185 3
|
4月前
|
存储 数据可视化 数据挖掘
揭秘!Matplotlib与Seaborn联手,如何让Python数据分析结果一目了然,惊艳全场?
在数据驱动时代,高效直观地展示分析结果至关重要。Python中的Matplotlib与Seaborn是两大可视化工具,结合使用可生成美观且具洞察力的图表。本文通过分析某电商平台的商品销量数据集,展示了如何利用这两个库揭示商品类别与月份间的销售关系及价格对销量的影响。首先使用Matplotlib绘制月份销量分布直方图,再借助Seaborn的箱线图进一步探索不同类别和价格区间下的销量稳定性。
79 10
|
4月前
|
数据可视化 数据挖掘 开发者
数据可视化新纪元!Python + Matplotlib + Seaborn,让你的数据故事生动起来!
在这个数据可视化的新纪元,让我们充分发挥 Python 的优势,用精彩的图表讲述数据背后的故事,为决策提供有力的支持,为交流带来清晰的视角。
39 4
|
3月前
|
数据可视化 定位技术 Python
Python数据可视化--Matplotlib--入门
Python数据可视化--Matplotlib--入门
35 0
|
4月前
|
机器学习/深度学习 数据可视化 数据挖掘
数据可视化大不同!Python数据分析与机器学习中的Matplotlib、Seaborn应用新视角!
在数据科学与机器学习领域,数据可视化是理解数据和优化模型的关键。Python凭借其强大的可视化库Matplotlib和Seaborn成为首选语言。本文通过分析一份包含房屋面积、卧室数量等特征及售价的数据集,展示了如何使用Matplotlib绘制散点图,揭示房屋面积与售价的正相关关系;并利用Seaborn的pairplot探索多变量间的关系。在机器学习建模阶段,通过随机森林模型展示特征重要性的可视化,帮助优化模型。这两个库在数据分析与建模中展现出广泛的应用价值。
62 2
|
4月前
|
数据可视化 数据挖掘 Python
逆袭之路!Python数据分析新手如何快速掌握Matplotlib、Seaborn,让数据说话更响亮?
在数据驱动时代,掌握数据分析技能至关重要。对于Python新手而言,Matplotlib和Seaborn是数据可视化的两大利器。Matplotlib是最基本的可视化库,适合绘制基础图表;Seaborn则提供高层次接口,专注于统计图形和美观样式。建议先学Matplotlib再过渡到Seaborn。快速上手Matplotlib需多实践,示例代码展示了绘制折线图的方法。Seaborn特色功能包括分布图、关系图及分类数据可视化,并提供多种主题和颜色方案。两者结合可实现复杂数据可视化,先用Seaborn绘制统计图,再用Matplotlib进行细节调整。熟练掌握这两者,将显著提升你的数据分析能力。
57 4
|
4月前
|
Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。

热门文章

最新文章