python数据可视化的那些操作你了解吗
作者:橙橙小狸猫 发布时间:2023-11-04 15:18:55
标签:python,数据,可视化,操作
0. 前言
数据处理过程中,可视化可以更直观得感受数据,因此打算结合自己的一些实践经理,以效果为准写这篇博客。内容应该会不断扩充。
1. matplotlib中figure、subplot和plot等什么关系
记住这几个关系可以结合实际。假设你去外面写生要带哪些工具呢,包括画板、画纸还有画笔,那么就可以一一对应了。
函数 | 工具 |
---|---|
figure | 画板 |
subplot、add_subplot | 画纸 |
plot、hist、scatter | 画笔 |
那么再往深处想,画纸贴在画板上,画纸可以裁剪成多块布局在画板上,而画笔只能画在纸上,可能这样讲有点笼统,下面一个代码配合注释就可以清晰明白啦。(感觉需要记住以下代码)
代码
import matplotlib.pyplot as plt
import numpy as np
# 拿起画板
fig = plt.figure()
# 在画板上贴上画纸
ax1 = fig.add_subplot(221)
ax2 = fig.add_subplot(222)
ax3 = fig.add_subplot(223)
# 一步完成(直接拿起画板和画纸)-----------------
# ax1 = plt.subplot(221)
# ax2 = plt.subplot(222)
# ax3 = plt.subplot(223)
# ----------------------------------------
# 在画纸上作图
ax1.hist(np.random.randn(100), bins=20, color='k', alpha=0.3)
ax2.scatter(np.arange(30), np.arange(30) + 3 * np.random.randn(30))
ax3.plot(np.random.randn(50).cumsum(), 'k--')
plt.show()
运行结果
函数解析
代码行 | 作用 | 参考链接 |
---|---|---|
ax1.hist(np.random.randn(100), bins=20, color=‘k’, alpha=0.3) | 绘制直方图 | python用hist参数解读 |
2. 画图的细节修改
依次完成以下的画图效果:
1.一个正弦函数和一个随机数值的曲线,正弦函数直线,随机数值曲线虚线以及其他样式修改;
2.图例、标签等修改;
3.加上标注,标注范围内用红色矩形表示。
2.1 plot画图形式修改
代码
import matplotlib.pyplot as plt
import numpy as np
# 拿起画板
fig = plt.figure()
# 贴上画纸
ax1 = fig.add_subplot(111)
# 数据准备
x_sin = np.arange(0, 6, 0.001) # [0, 6]
y_sin = np.sin(x_sin)
data_random = np.zeros(7) # 生成[-1,1]的7个随机数
for i in range(0, 6):
data_random[i] = np.random.uniform(-1, 1)
# 画图
ax1.plot(x_sin, y_sin, linestyle='-', color='g', linewidth=3)
ax1.plot(data_random, linestyle='dashed', color='b', marker='o')
plt.show()
运行结果
2.2 添加图例、标签等
代码
import matplotlib.pyplot as plt
import numpy as np
# 拿起画板
fig = plt.figure()
# 贴上画纸
ax1 = fig.add_subplot(111)
# 数据准备
x_sin = np.arange(0, 6, 0.001) # [0, 6]
y_sin = np.sin(x_sin)
data_random = np.zeros(7) # 生成[-1,1]的7个随机数
for i in range(0, 6):
data_random[i] = np.random.uniform(-1, 1)
# 画图
ax1.plot(x_sin, y_sin, linestyle='-', color='g', linewidth=3, label='sin')
ax1.plot(data_random, linestyle='dashed', color='b', marker='o', label='random')
#-----------------添加部分------------------
# 添加标题
ax1.set_title('Title')
# 添加x轴名称
ax1.set_xlabel('x')
# 设置x轴坐标范围
ax1.set_xlim(xmin=0, xmax=6)
# 添加图例,在plot处加上label
ax1.legend(loc='best')
#----------------------------------------
plt.show()
运行结果
2.3 在图上画注解和矩形
代码
import matplotlib.pyplot as plt
import numpy as np
# 拿起画板
fig = plt.figure()
# 贴上画纸
ax1 = fig.add_subplot(111)
# 数据准备
x_sin = np.arange(0, 6, 0.001) # [0, 6]
y_sin = np.sin(x_sin)
data_random = np.zeros(7) # 生成[-1,1]的7个随机数
for i in range(0, 6):
data_random[i] = np.random.uniform(-1, 1)
# 画图
ax1.plot(x_sin, y_sin, linestyle='-', color='g', linewidth=3, label='sin')
ax1.plot(data_random, linestyle='dashed', color='b', marker='o', label='random')
# 添加标题
ax1.set_title('Title')
# 添加x轴名称
ax1.set_xlabel('x')
# 设置x轴坐标范围
ax1.set_xlim(xmin=0, xmax=6)
# 添加图例
ax1.legend(loc='best')
#-----------------添加部分------------------
# 注解
ax1.annotate('max', xy=((np.pi) / 2, np.sin(np.pi/2)),
xytext=((np.pi) / 2, np.sin(np.pi/2)-0.2),
arrowprops=dict(facecolor='black', headwidth=4, width=2,headlength=4),
horizontalalignment='left', verticalalignment='top')
ax1.annotate('min', xy=((np.pi) * 3 / 2, np.sin(np.pi * 3 / 2)),
xytext=((np.pi) * 3 / 2, np.sin(np.pi * 3 / 2)+0.2),
arrowprops=dict(facecolor='black', headwidth=4, width=2,headlength=4),
horizontalalignment='left', verticalalignment='top')
# 矩形
print(ax1.axis())
rect = plt.Rectangle((np.pi / 2, ax1.axis()[2]), np.pi, ax1.axis()[3] - ax1.axis()[2], color='r', alpha=0.3) # 起始坐标点,width, height
ax1.add_patch(rect)
#-----------------------------------------
plt.show()
运行结果
3. 图形保存
plt.savefig('figpath.png', dpi=400)
注意要放在show前面。
完整代码:
import matplotlib.pyplot as plt
import numpy as np
# 拿起画板
fig = plt.figure()
# 贴上画纸
ax1 = fig.add_subplot(221)
ax2 = fig.add_subplot(222)
ax3 = fig.add_subplot(223)
# 数据准备
x_sin = np.arange(0, 6, 0.001) # [0, 6]
y_sin = np.sin(x_sin)
data_random = np.zeros(7) # 生成[-1,1]的7个随机数
for i in range(0, 6):
data_random[i] = np.random.uniform(-1, 1)
# 画图
ax1.plot(x_sin, y_sin, linestyle='-', color='g', linewidth=3, label='sin')
ax1.plot(data_random, linestyle='dashed', color='b', marker='o', label='random')
ax2.plot(x_sin, y_sin, linestyle='-', color='g', linewidth=3, label='sin')
ax2.plot(data_random, linestyle='dashed', color='b', marker='o', label='random')
ax3.plot(x_sin, y_sin, linestyle='-', color='g', linewidth=3, label='sin')
ax3.plot(data_random, linestyle='dashed', color='b', marker='o', label='random')
# # 添加标题
ax2.set_title('Title')
# 添加x轴名称
ax2.set_xlabel('x')
# 设置x轴坐标范围
ax2.set_xlim(xmin=0, xmax=6)
# 添加图例
ax2.legend(loc='best')
ax3.set_title('Title')
# 添加x轴名称
ax3.set_xlabel('x')
# 设置x轴坐标范围
ax3.set_xlim(xmin=0, xmax=6)
# 添加图例
ax3.legend(loc='best')
# 注解
ax3.annotate('max', xy=((np.pi) / 2, np.sin(np.pi/2)),
xytext=((np.pi) / 2, np.sin(np.pi/2)-0.2),
arrowprops=dict(facecolor='black', headwidth=4, width=2,headlength=4),
horizontalalignment='left', verticalalignment='top')
ax3.annotate('min', xy=((np.pi) * 3 / 2, np.sin(np.pi * 3 / 2)),
xytext=((np.pi) * 3 / 2, np.sin(np.pi * 3 / 2)+0.2),
arrowprops=dict(facecolor='black', headwidth=4, width=2,headlength=4),
horizontalalignment='left', verticalalignment='top')
# 矩形
# print(ax1.axis())
rect = plt.Rectangle((np.pi / 2, ax3.axis()[2]), np.pi, ax3.axis()[3] - ax3.axis()[2], color='r', alpha=0.3) # 起始坐标点,width, height
ax3.add_patch(rect)
#-----------------添加部分------------------
plt.savefig('figpath.png', dpi=400)
#------------------------------------------
plt.show()
来源:https://blog.csdn.net/weixin_42442319/article/details/122650968
0
投稿
猜你喜欢
- 本文实例为大家分享了python使用webdriver爬取微信公众号的具体代码,供大家参考,具体内容如下# -*- coding: utf-
- 一、Flowable数据库表命名规则ACT_RE_*:’RE’表示repository(存储)。Re
- Python中的sys模块主要用于程序与解释器的交互,提供一系列函数和变量来处理Python运行环境1、sys.api_version --
- 在pycharm使用过程中,对于每次新建的python文件的时候,关于代码编写者的一些个人信息快捷填写,使用模板的方式比较方便。方法如下:1
- 问题描述:将python脚本设置成开机自启。环境:windows7 64位前段时间,一直想把文件打包成exe文件,然后设置成开机自启,虽然感
- 在Python中,对列表进行排序有两种方法。一种是调用 sort() 方法,该方法没有返回值,对列表本身进行升序排序。c
- 本文实例讲述了js实现黑色简易的滑动门网页tab选项卡效果。分享给大家供大家参考。具体如下:这是一款js实现的黑色风格网页滑动门菜单,虽然简
- 导读你真的知道CHAR和VARCHAR类型在存储和读取时的区别吗?还是先抛几条结论吧:1、存储的时候,CHAR总是会补足空格后再存储,不管用
- 本文主要是对leveldb进行一个简单的介绍及使用Python语言对其进行操作的代码示例,具体如下。leveldb 是google实现的一种
- 直接在table标签中设置下不就行了吗?这是静态的,如果要动态设置你会吗?function com_onresize(){var conte
- 起步要介绍一个非常方便的 Django 扩展包-- django-hosts 。它能够提供在不同的子域名下访问不同的 app。例如,在项目中
- 推荐阅读:使用python检测主机存活端口及检查存活主机下面给大家分享使用python语言实现获取主机名根据端口杀死进程代码。ip=os.p
- 使用JS技术实现QQ阅读类似的点击展开、收起效果,具体内容如下一、定义展开函数showdiv(),实现点击"全文"按钮,
- 一、前情提要相信来看这篇深造爬虫文章的同学,大部分已经对爬虫有不错的了解了,也在之前已经写过不少爬虫了,但我猜爬取的数据量都较小,因此没有过
- 概述从今天开始我们将开启一段自然语言处理 (NLP) 的旅程. 自然语言处理可以让来处理, 理解, 以及运用人类的语言, 实现机器语言和人类
- 它解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块.动态创建和执行SQL语句性能超前,EXECUTE IMMEDIATE的目标在
- 1. 创建一个新的环境打开Anaconda Navigator,找不到的win10左下角输入一下就能找到了,如下图。这里通过列表下面的cre
- 官方教程http://www.kuitao8.com/demo/20140224/1/bootstrap-multiselect-maste
- 接前两篇“运行时查看线程信息”的博客,我在想,既然我可以随时打印线程信息,那么我是不是可以随时打印进程内部的其它信息呢?比如,实时查看一些对
- 参考阅读:https://www.jb51.net/article/169285.htm代码:set objTTS = createobje