数据可视化—绘制简单的折线图

简介: 在使用matplotlib绘制简单的折线图之前首先需要安装matplotlib,直接在pycharm终端pip install matplotlib即可

58057bd8fa0e49ddb52365c3028ed730.jpg


绘制简单的折线图



✅在使用matplotlib绘制简单的折线图之前首先需要安装matplotlib,直接在pycharm终端pip install matplotlib即可


aaed654ecd064bdb9c035ed3bd86303e.png


✅使用matplotlib绘制简单的折线图,再对其进行定制,实现数据的可视化操作


import matplotlib.pyplot as plt  # 导入pyplot模块并设置别名为plt
squares = [1, 4, 9, 16, 25]
plt.plot(squares)
plt.show()  # 打开matplotib查看器,并显示绘制的图形

运行结果如下:


7f2bff63e43546c2baaf69cae3c51dff.png


修改标签文字和线条粗细



上图所示的图形表示的数字越来越大,但标签文字太小,线条太细,不方便观察,这时就需要调整一下增加图形的可读性


import matplotlib.pyplot as plt  # 导入pyplot模块并设置别名为plt
squares = [1, 4, 9, 16, 25]
plt.plot(squares, linewidth=5)  # 函数linewidth设置绘制线条的粗细
# 设置图表标题,并给坐标轴加上标签
plt.title('Square number', fontsize=24)
plt.xlabel('Value', fontsize=14)
plt.ylabel('Square of Value', fontsize=14)
# 设置刻度标记的大小
plt.tick_params(axis='both', labelsize=14)
plt.show()  # 打开matplotib查看器,并显示绘制的图形


效果如下:


f5df10879e534efcb34160b8b49a8d68.png


校正图形



图形更容易阅读了,但我们发现没有正确的绘制数据,折线图的终点指出4的平方为25!


33008bdb6f6c4695863823cc88cb5261.jpg


向plot()提供一系列数字时,它假设第一个数据点对应的x坐标值为0,但我们的第一个点对应的x值为1。为改变这种默认行为,我们可以给plot同时提供输入值和输出值。


import matplotlib.pyplot as plt  # 导入pyplot模块并设置别名为plt
input_value = [1, 2, 3, 4, 5]
squares = [1, 4, 9, 16, 25]   
plt.plot(input_value, squares, linewidth=5)  # 函数linewidth设置绘制线条的粗细
# 设置图表标题,并给坐标轴加上标签
plt.title('Square number', fontsize=24)
plt.xlabel('Value', fontsize=14)
plt.ylabel('Square of Value', fontsize=14)
# 设置刻度标记的大小
plt.tick_params(axis='both', labelsize=14)
plt.show()  # 打开matplotib查看器,并显示绘制的图形


效果如下:


cb9d0d05c4854efeb555865ea239a957.png


现在plot()成功绘制数据,因为我们同时提供了输入值和输出值。使用plot()时可指定各种实参,还可使用众多函数对图像进行定制


使用scatter()绘制散点图并设置其格式



有时候需要绘制散点图并设置各个数据的格式。例如:你可能想以一种颜色显示较小的值,用一种颜色显示较大的值。绘制大型数据集时,你还可以对每个点都设置同样的格式,再使用不同的样式选项重新绘制某个点,以突出它们

✅要绘制单个点,可使用函数scatter(),并向它传递一对x,y坐标,它将在指定绘制绘制一个点

import matplotlib.pyplot as plt
plt.scatter(2, 4)  # 向scatter函数传递一对x,y坐标
plt.show()  # 打开matplotib查看器,并显示绘制的图形


效果如下:


7e2e84ded61e42048b286c80ba655940.png


下面来设置输出的样式,使其更有趣:添加标题,给坐标轴加上标签,并设置文本格式


import matplotlib.pyplot as plt
plt.scatter(2, 4, s=200)  # 向scatter函数传递一对x,y坐标
# 设置图表标题,并给坐标轴加上标签
plt.title('Square number', fontsize=24)
plt.xlabel('Value', fontsize=14)
plt.ylabel('Square of Value', fontsize=14)
# 设置刻度标记的大小
plt.tick_params(axis='both', which='major', labelsize=14)
plt.show()  # 打开matplotib查看器,并显示绘制的图形


效果如下:


df38a0330f5d4954b7511ec9760e9465.png


使用scatter()绘制一系列点


import matplotlib.pyplot as plt
x_values = [1, 2, 3, 4, 5]
y_values = [1, 4, 9, 16, 25]
plt.scatter(x_values, y_values, s=100)  # 向scatter函数传递一对x,y坐标
# 设置图表标题,并给坐标轴加上标签
plt.title('Square number', fontsize=24)
plt.xlabel('Value', fontsize=14)
plt.ylabel('Square of Value', fontsize=14)
# 设置刻度标记的大小
plt.tick_params(axis='both', which='major', labelsize=14)
plt.show()  # 打开matplotib查看器,并显示绘制的图形


效果如下:


369d299ee7ac43c1b474d54014595a4d.png


自动计算数据



手动计算列表包含的值很麻烦,可以利用python中的循环来解决,下面是绘制1000个点的范例:


import matplotlib.pyplot as plt
x_values = list(range(1, 1001))
y_values = [x ** 2 for x in x_values]
plt.scatter(x_values, y_values, s=10)  # 向scatter函数传递一对x,y坐标
# 设置图表标题,并给坐标轴加上标签
plt.title('Square number', fontsize=24)
plt.xlabel('Value', fontsize=14)
plt.ylabel('Square of Value', fontsize=14)
# 设置刻度标记的大小
plt.tick_params(axis='both', which='major', labelsize=14)
# 设置每个坐标轴的取值范围
plt.axis([0, 1100, 0, 1100000])
plt.show()  # 打开matplotib查看器,并显示绘制的图形

✅这里需要注意函数axis需要传入四个值,x,y坐标的最小值,最大值


效果如下:


4e8fbb8f59414b3c804971904ca8a5ac.png


删除数据点的轮廓



要删除数据点的轮廓,可在调用scatter()时传递实参edgecolor=‘none’

plt.scatter(x_values, y_values, edgecolors='none', s=10)
import matplotlib.pyplot as plt
x_values = list(range(1, 1001))
y_values = [x ** 2 for x in x_values]
plt.scatter(x_values, y_values, edgecolors='none', s=10)  # 向scatter函数传递一对x,y坐标
# 设置图表标题,并给坐标轴加上标签
plt.title('Square number', fontsize=24)
plt.xlabel('Value', fontsize=14)
plt.ylabel('Square of Value', fontsize=14)
# 设置刻度标记的大小
plt.tick_params(axis='both', which='major', labelsize=14)
# 设置每个坐标轴的取值范围
plt.axis([0, 1100, 0, 1100000])
plt.show()  # 打开matplotib查看器,并显示绘制的图形


效果如下:


a01bf54f220f49d58d14c38fc601c223.png


自定义颜色



要修改数据点的颜色,可向scatter()传递参数c,并将其设置要使用的颜色的名称


plt.scatter(x_values, y_values, c='red',edgecolors='none', s=10)
import matplotlib.pyplot as plt
x_values = list(range(1, 1001))
y_values = [x ** 2 for x in x_values]
plt.scatter(x_values, y_values, c='red',edgecolors='none', s=10)  # 向scatter函数传递一对x,y坐标
# 设置图表标题,并给坐标轴加上标签
plt.title('Square number', fontsize=24)
plt.xlabel('Value', fontsize=14)
plt.ylabel('Square of Value', fontsize=14)
# 设置刻度标记的大小
plt.tick_params(axis='both', which='major', labelsize=14)
# 设置每个坐标轴的取值范围
plt.axis([0, 1100, 0, 1100000])
plt.show()  # 打开matplotib查看器,并显示绘制的图形


效果如下:


58a16ece758a49a0afaa9236bfa83128.png


使用颜色映射



颜色映射(colormap)是一系列颜色,它们从颜色渐变到结束颜色。在可视化中,颜色映射用于突出数据的规律,例如,你可能用较浅的颜色显示较小的值,并使用较深的颜色显示较大的值


import matplotlib.pyplot as plt
x_values = list(range(1, 1001))
y_values = [x ** 2 for x in x_values]
# 将c设置为y值列表,使用参数cmap告诉pyplot使用哪个颜色映射
plt.scatter(x_values, y_values, c=y_values, cmap=plt.cm.Blues, edgecolors='none', s=10)  # 向scatter函数传递一对x,y坐标
# 设置图表标题,并给坐标轴加上标签
plt.title('Square number', fontsize=24)
plt.xlabel('Value', fontsize=14)
plt.ylabel('Square of Value', fontsize=14)
# 设置刻度标记的大小
plt.tick_params(axis='both', which='major', labelsize=14)
# 设置每个坐标轴的取值范围
plt.axis([0, 1100, 0, 1100000])
plt.show()  # 打开matplotib查看器,并显示绘制的图形

1782e9b00be14d0eb62fa5c1ca326f10.png


自动保存图表



要让程序自动将图表保存到文件中,可将对plt.show()的调用替换为对plt.sacefig()的调用


plt.savefig('squares.png',bbox_inches='tight')


第一个实参指定要以什么样的文件名保存图表,第二个实参指定将图表多余的空白区域裁剪(如果要保留,可省略这个实参)


import matplotlib.pyplot as plt
x_values = list(range(1, 1001))
y_values = [x ** 2 for x in x_values]
# 将c设置为y值列表,使用参数cmap告诉pyplot使用哪个颜色映射
plt.scatter(x_values, y_values, c=y_values, cmap=plt.cm.Blues, edgecolors='none', s=10)  # 向scatter函数传递一对x,y坐标
# 设置图表标题,并给坐标轴加上标签
plt.title('Square number', fontsize=24)
plt.xlabel('Value', fontsize=14)
plt.ylabel('Square of Value', fontsize=14)
# 设置刻度标记的大小
plt.tick_params(axis='both', which='major', labelsize=14)
# 设置每个坐标轴的取值范围
plt.axis([0, 1100, 0, 1100000])
plt.savefig('squares.png',bbox_inches='tight')
plt.show()  # 打开matplotib查看器,并显示绘制的图形


保存效果如下:


95e0ccb54b0f4f29892c6e831c1f7436.png


✅注意事项:

一定要把保存图表的代码放在plt.show前面,要是放在后面show会重新创建新的图片


12d51ce668204638897200e3148ebcae.png


结束语🏆


🔥推荐一款模拟面试、刷题神器网站

点击跳转进入网站

1、算法篇(398题):面试必刷100题、算法入门、面试高频榜单

2、SQL篇(82题):快速入门、SQL必知必会、SQL进阶挑战、面试真题

3、大厂笔试真题:字节跳动、美团、百度、腾讯…


9031a10266ce4403bf7099a1eebc4415.jpg

相关文章
|
Python
如何在pycharm中查看自己安装的库及其版本
如何在pycharm中查看自己安装的库及其版本
2313 0
如何在pycharm中查看自己安装的库及其版本
|
机器学习/深度学习 算法 流计算
TPAMI 2024:ProCo: 无限contrastive pairs的长尾对比学习
【8月更文挑战第17天】在深度学习领域,长尾分布问题困扰着视觉识别任务。针对监督对比学习(SCL)在长尾数据中受限于批量大小的问题,清华大学的研究者在TPAMI 2024发表了一种概率对比学习方法ProCo。ProCo通过估计特征空间中的样本分布,允许在小批量数据中高效构建对比对,采用vMF混合模型简化分布估计,实现无限对比对的采样和封闭形式的对比损失,有效解决了SCL的固有问题。此方法不仅提升了长尾类别的识别精度,还适用于半监督学习场景。尽管存在假设限制和超参数调整需求,ProCo在多种任务和数据集上展示了显著的性能提升。
476 60
|
11月前
|
机器学习/深度学习 存储 缓存
ORCA:基于持续批处理的LLM推理性能优化技术详解
大语言模型(LLMs)的批处理优化面临诸多挑战,尤其是由于推理过程的迭代性导致的资源利用不均问题。ORCA系统通过引入迭代级调度和选择性批处理技术,有效解决了这些问题,大幅提高了GPU资源利用率和系统吞吐量,相比FasterTransformer实现了最高37倍的性能提升。
649 26
|
11月前
|
负载均衡 Java 开发者
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
610 5
|
人工智能 Apache
Flux AI:释放你的想象力,用文字生成图像
Flux AI 是一款支持多种风格的 AI 图像生成器。它使用先进的基于变换器的管道模型来实现高质量、精确的输出。它具有用户友好的界面,适合专业人士和业余爱好者。Flux AI 可以快速将文本提示转换为精确的图像,从而提高创作效率。
|
机器学习/深度学习
"独家揭秘TPAMI 2024神作:ProCo魔法降临,无限对比对撞长尾困境,革命性学习浪潮来袭!"
【8月更文挑战第19天】《ProCo: 无限对比对的长尾对比学习》近期登上TPAMI 2024。针对现实世界图像数据中的长尾分布问题,该方法通过构建原型网络并生成无限对比对来增强模型学习,设计了新颖的对比损失函数及优化策略,显著提升了长尾识别准确性。实验显示,在CIFAR-10-LT等数据集上,ProCo方法的Acc@1达47.3%,优于现有技术。示例代码展示了模型训练流程,有助于快速上手实践。此成果有望推动长尾视觉识别领域的进一步发展。
322 2
|
监控 应用服务中间件 数据库
Django 应用部署也太让人头疼了吧!但掌握这些,你就能轻松搞定,快来一探究竟!
【8月更文挑战第31天】作为一名开发者,将Django应用从开发环境顺利部署到生产环境至关重要。这涉及技术操作与实际考量,需确保应用稳定高效运行。从开发到部署至如DigitalOcean等云服务器,每一步——包括安装必要软件、配置数据库、使用Git上传代码、设置Nginx和Gunicorn、实施安全措施以及监控和日志记录——都需遵循最佳实践,以提供可靠的用户服务。
261 0
|
供应链 数据可视化 数据挖掘
2024年最新国内五款无代码平台盘点
五款无代码平台测评,帮你选择最适合的平台。
2024年最新国内五款无代码平台盘点
|
存储 前端开发 JavaScript
State 状态管理最佳实践
【10月更文挑战第1天】本文深入浅出地介绍了前端开发中的状态管理概念,强调其在构建复杂单页应用(SPA)中的重要性。文章详细阐述了状态管理的核心原则,如单一源真理、状态不可直接修改及状态变更透明,并对比分析了如Redux、Vuex和MobX等常用状态管理库。通过具体代码示例,指出了状态分散和非原子操作等常见问题及其解决方案,为开发者提供了实用指导。
516 2
|
数据采集 机器学习/深度学习
谷歌创新框架:从非结构化数据,实现多模态学习
【6月更文挑战第13天】谷歌推出LANISTR框架,旨在多模态学习中整合非结构化数据,如语言、图像和结构化数据。通过掩码技术和多模态编码器,学习统一的多模态表示,擅长处理缺失模态数据,具备强泛化能力。然而,大规模预训练需大量资源,性能依赖数据质量,且解释性和可控性尚待改善。[论文链接](https://arxiv.org/pdf/2305.16556)
214 1