Python 数据可视化超详细讲解折线图的实现
作者:hacker707 发布时间:2023-06-06 14:49:18
绘制简单的折线图
✅在使用matplotlib绘制简单的折线图之前首先需要安装matplotlib,直接在pycharm终端pip install matplotlib即可
✅使用matplotlib绘制简单的折线图,再对其进行定制,实现数据的可视化操作
import matplotlib.pyplot as plt # 导入pyplot模块并设置别名为plt
squares = [1, 4, 9, 16, 25]
plt.plot(squares)
plt.show() # 打开matplotib查看器,并显示绘制的图形
运行结果如下:
修改标签文字和线条粗细
上图所示的图形表示的数字越来越大,但标签文字太小,线条太细,不方便观察,这时就需要调整一下增加图形的可读性
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查看器,并显示绘制的图形
效果如下:
校正图形
图形更容易阅读了,但我们发现没有正确的绘制数据,折线图的终点指出4的平方为25!
向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查看器,并显示绘制的图形
效果如下:
现在plot()成功绘制数据,因为我们同时提供了输入值和输出值。使用plot()时可指定各种实参,还可使用众多函数对图像进行定制
使用scatter()绘制散点图并设置其格式
有时候需要绘制散点图并设置各个数据的格式。例如:你可能想以一种颜色显示较小的值,用一种颜色显示较大的值。绘制大型数据集时,你还可以对每个点都设置同样的格式,再使用不同的样式选项重新绘制某个点,以突出它们 ✅要绘制单个点,可使用函数scatter(),并向它传递一对x,y坐标,它将在指定绘制绘制一个点
import matplotlib.pyplot as plt
plt.scatter(2, 4) # 向scatter函数传递一对x,y坐标
plt.show() # 打开matplotib查看器,并显示绘制的图形
效果如下:
下面来设置输出的样式,使其更有趣:添加标题,给坐标轴加上标签,并设置文本格式
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查看器,并显示绘制的图形
效果如下:
使用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查看器,并显示绘制的图形
效果如下:
自动计算数据
手动计算列表包含的值很麻烦,可以利用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坐标的最小值,最大值 效果如下:
删除数据点的轮廓
要删除数据点的轮廓,可在调用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查看器,并显示绘制的图形
效果如下:
自定义颜色
要修改数据点的颜色,可向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查看器,并显示绘制的图形
效果如下:
使用颜色映射
颜色映射(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查看器,并显示绘制的图形
自动保存图表
要让程序自动将图表保存到文件中,可将对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查看器,并显示绘制的图形
保存效果如下:
✅注意事项: 一定要把保存图表的代码放在plt.show前面,要是放在后面show会重新创建新的图片
来源:https://blog.csdn.net/xqe777/article/details/123419931
猜你喜欢
- 锁是指在某组资源中,两个或两个以上的线程在执行过程中,在争夺某一资源时而造成互相等待的现象,若无外力的作用下,它们都将无法推进下去,死时就可
- 本文实例讲述了python提取内容关键词的方法。分享给大家供大家参考。具体分析如下:一个非常高效的提取内容关键词的python代码,这段代码
- 下面我挑选出的这几个技巧常常会被人们忽略,但它们在日常编程中能真正的给我们带来不少帮助。 1. 字典推导(Dictionary compre
- <% set conn=server.createobject("adodb.connect
- 新手,看到很多网页上有显示/隐藏的菜单,可以显示隐藏层的同时控制FLASH的播放与停止。找了好久都找不到这个功能。。。还望高人指点当点击时就
- 网站域名一般都会选简短易记的,因为这对于网站宣传来说也可以省不少力。而被很多网站忽视的站内Url结构则在一定程度上反映出网站的整体架构。当设
- 如下所示:import cv2 # [1]导入OpenCv开源库import numpy as npimage_path = "F
- 因工作需要,最近在学习使用python来解析各种文件,包括xmind,xml,excel,csv等等。在学习python解析XML的时候看到
- time模块1:概述时间表示的分类时间戳格式化的时间字符串结构化时间时间戳:时间戳表示的是从1970年1月1日整0点到目前秒的偏移量,数据类
- 前言当使用pandas读取csv文件时,如果元素为空,则将其视为缺失值NaN(Not a Number, 非数字)。使用dropna()方法
- 一、前言Python logging 模块定义了为应用程序和库实现灵活的事件日志记录的函数和类。程序开发过程中,很多程序都有记录日志的需求,
- pytho的使用和分发完全是免费的,它是一种面向对象的语言,它的。它的类模块支持多态,操作符重载和多重继承等高级概念,并且以python特有
- 代码如下:--函数 CREATE function fn_GetPy(@str nvarchar(4000)) returns nvarch
- 前言:之前的文章我们已经开启了爬虫程序的exe之旅,但是我们最终实现的程序存在一个非常大的问题,当进行网络请求的时候,程序卡死,直到数据请求
- 大家都知道在Dreamwerver中可以很方便地实现记录集的分页显示,但是生成的代码的确很庞大,影响了网页的显示速度,看起来条理也不是很清晰
- JavaScript 代码一般最常见的语法格式就是定义函数 function xxx(){/*code...*/},经常有这样的一大堆函数定
- 呵呵,先说明一下下面的程序大部分收集自网络,因为本人在asp编程中经常使用到随机函数,所以收集了一些这类的函数,并做了些注释,方便使用。首发
- 函数的默认参数请勿定义可变类型经常会看到这样一句代码警告:Default argument value is mutable意思是告诉我们函
- 目录前言🎪 一、Python 关键字🎢 二、Python标识符🎠 2.1 在 Python 中创建标识符的指南🎡 2.2 测试标识符是否有效
- 可能有些地方翻译得不好,请见谅在这个冠冕堂皇的标题之下,我想回答一个土方,有人在博客提出很久了。该土方很好的描述了很多图标设计师所面临的典型