Python受欢迎的原因之一就是其计算生态丰富,据不完全统计,Python 目前为止有约13万+的第三方库。
本系列将会陆续整理分享一些有趣、有用的第三方库。
-
通过百度网盘获取:
链接:https://pan.baidu.com/s/1FSGLd7aI_UQlCQuovVHc_Q?pwd=mnsj
提取码:mnsj
-
前往GitHub获取:
https://github.com/returu/Python_Ecosystem
-
支持多种图表类型:包括折线图、散点图、柱状图、直方图、日期时间图(如K线图); -
丰富的绘图功能:可以绘制误差线、混淆矩阵,并在图表中添加额外的文本、线条和形状; -
图像和视频支持:支持在终端中绘制图像(包括GIF动画)和播放带有音频的视频(包括YouTube视频); -
保存图表:可以将图表保存为文本或彩色HTML格式; -
无依赖性:除了图像和视频功能外,plotext无需额外依赖; -
命令行工具:提供了一个专用的命令行工具; -
语法简洁:其API设计类似于matplotlib,易于上手。
-
安装:
-
普通安装:
pip install plotext
-
可选依赖包安装:
pip install "plotext[image]"
pip install "plotext"
pip install "plotext[completion]"
plotext支持多种图表类型、图像绘制以及视频播放。
-
基本图表绘制:
plotext在绘制图表时,支持设置线条颜色、标记样式等,以增强图表的可视化效果。
-
散点图:
使用scatter()函数绘制散点图并设置样式,同时添加参考线。
### 文件名 : BasicPlot.py ###
# 导入 plotext 库,并将其重命名为 plt,方便后续使用
import plotext as plt
# 调用sin()函数生成正弦波数据,将生成的数据赋值给变量 y
y = plt.sin()
# 使用 scatter() 函数绘制散点图
# y为要绘制的数据
# color="red" 表示散点的颜色为红色
# marker="o" 表示散点的标记形状为圆形
# label="y=sin(x)" 为该散点图添加标签,用于图例显示
plt.scatter(y, color="red", marker="o", label="y=sin(x)")
# 设置图表的标题为 "Extra Lines"
plt.title("Extra Lines")
# 绘制一条垂直直线
# 100 表示直线在 x 轴上的位置
# "magenta" 表示直线的颜色为洋红色
plt.vline(100, "magenta")
# 绘制一条水平直线
# 0.5 表示直线在 y 轴上的位置
# "blue+" 表示直线的颜色为蓝色,并且用 + 号来绘制直线
plt.hline(0.5, "blue+")
# plot_size() 方法用于设置活动子图的绘图尺寸(以字符大小为单位)
# 这里将绘图的宽度设置为 200 个字符,高度设置为 20 个字符
plt.plotsize(200, 20)
# 显示绘制好的图表
plt.show()
# 保存为文本文件
# save_fig() 方法将当前绘制的图表保存为文本文件
# "./plot.txt" 表示保存的文件路径和文件名,保存的是无颜色的文本格式
plt.save_fig("./plot.txt")
绘制效果如下图所示:

-
柱状图:
使用bar()函数绘制柱状图,并为每个柱状图添加文本标签。
### 文件名 : BarPlot.py ###
# 导入 plotext 库
import plotext as plt
# 定义一个包含不同披萨种类的列表
pizzas = ["Sausage", "Pepperoni", "Mushrooms", "Cheese", "Chicken", "Beef"]
# 定义一个列表,存储每种披萨对应的百分比数据
percentages = [14, 36, 11, 8, 7, 4]
# 使用 plotext 的 bar 函数绘制柱状图
# pizzas 作为 x 轴数据,表示不同的披萨种类
# percentages 作为 y 轴数据,表示每种披萨对应的百分比
plt.bar(pizzas, percentages)
# 设置图表的标题,用于描述图表的主题
plt.title("Labelled Bar Plot using Text()")
# 使用列表推导式为每个柱状图添加文本标签
# 对于 pizzas 列表中的每个元素,执行以下操作:
# plt.text 函数用于在指定位置添加文本
# pizzas[i] 是要显示的文本内容,即披萨的种类
# x = i + 1 表示文本在 x 轴上的位置,i 是当前元素的索引,加 1 是为了确定合适的位置
# y = percentages[i] + 1.5 表示文本在 y 轴上的位置,在对应柱状图的高度基础上加 1.5,使文本显示在柱子上方
# alignment = 'center' 表示文本居中对齐
# color = 'red' 表示文本的颜色为红色
[plt.text(pizzas[i], x = i + 1, y = percentages[i] + 1.5, alignment = 'center', color = 'red') for i in range(len(pizzas))]
# 设置 y 轴的显示范围
# 下限为 0,上限为 38,确保所有数据能在合理的范围内显示
plt.ylim(0, 38)
# 设置绘图区域的大小
# 宽度为 100 个字符单位,高度为 30 个字符单位
plt.plotsize(100, 30)
# 显示绘制好的图表
plt.show()
绘制效果如下图所示:

-
多图绘制:
plotexty可以通过构建子图的方式在同一个终端窗口中绘制多个图表。
构建子图网格的操作基本符合直觉,只需使用subplots(rows , cols)方法来构建一个包含rows x cols个子图的网格,再使用subplot()方法来访问指定行和列位置(从子图矩阵的左上角开始计数,起始索引为 1)的特定子图,并确定在其中绘制的数据内容以及绘制方式。
另外,子图可以进行嵌套,即任何一个子图都可以创建属于它自己的子图矩阵。例如,要创建一个 2×2 的子图矩阵,其中第一个子图本身又是一个 3×4 的子图矩阵,可以使用subplots(2, 2); subplot(1, 1); subplots(3, 4),或者直接写成subplots(2, 2).subplot(1, 1).subplots(3, 4)。
### 文件名 : MultiplePlot.py ###
# 导入 plotext 库
import plotext as plt
# 导入 numpy 库,用于进行数值计算和生成数据
import numpy as np
# 生成数据
# 使用 numpy 的 linspace 函数生成从 0 到 10 之间均匀分布的 100 个点,作为 x 轴的数据
x = np.linspace(0, 10, 100)
# 计算 x 对应的正弦值,得到 y1 数据
y1 = np.sin(x)
# 计算 x 对应的余弦值,得到 y2 数据
y2 = np.cos(x)
# 创建一个 2 行 1 列的子图布局
plt.subplots(2, 1)
# 绘制第一个图表
# 选择 2 行 1 列子图布局中的第 1 行第 1 列的子图进行绘图
plt.subplot(1, 1)
# 使用 plotext 的 plot 函数绘制 x 和 y1 的折线图
plt.plot(x, y1)
# 设置第一个子图的标题为 "Sine Wave"
plt.title("Sine Wave")
# 绘制第二个图表
# 选择 2 行 1 列子图布局中的第 2 行第 1 列的子图进行绘图
plt.subplot(2, 1)
# 使用 plotext 的 plot 函数绘制 x 和 y2 的折线图
plt.plot(x, y2)
# 设置第二个子图的标题为 "Cosine Wave"
plt.title("Cosine Wave")
# 显示图表
# 调用 plotext 的 show 函数将绘制的图表显示在终端中
plt.show()
绘制效果如下图所示:

-
图像绘制:
使用image_plot(path)函数绘制图像,使用play_gif(path)函数渲染GIF图像。
绘制图像时有以下注意事项:
-
建议在调用image_plot()之前使用plotsize()方法,尤其是对于较大的图像,以便预先减小图像大小,从而减轻计算负担。
-
如果希望绘制速度更快,可以将fast参数设置为True。在这种情况下,绘图尺寸将锁定为之前选择的大小,不会适应终端或子图的大小;此外,后续的任何设置方法(如xlabel()、frame()等)都不会生效。
-
如果要绘制 超出终端大小 的图像,请使用plt.limit_size()函数,或者使用基于tkinter的应用程序。
### 文件名 : ImagePlot.py ###
# 导入 plotext 库
import plotext as plt
# 要绘制的图像文件的路径
path = './logo.jpg'
# 使用 plotsize 函数设置绘图区域的大小
# 这里将绘图区域的宽度和高度都设置为 64 个字符单位
plt.plotsize(64, 64)
# 使用 image_plot 函数在终端中绘制指定路径的图像
# path 参数指定要绘制的图像文件的路径
# marker 参数指定用于绘制图像的字符列表,这里使用 "codedesigner" 中的字符
# style 参数设置图像的显示样式,'inverted' 表示使用反转样式
# grayscale 参数设置为 True,表示以灰度模式绘制图像,即只显示黑白效果
plt.image_plot(path,
marker=list("codedesigner"),
style='inverted',
# grayscale=True # 以灰度模式绘制图像
)
# 使用 title 函数为当前绘制的图像设置标题,标题会显示在图像的上方
plt.title("码农设计师")
# 调用 show 函数将绘制好的图像在终端中显示出来
plt.show()
# 使用 save_fig 函数将当前绘制的图像保存为文件
# 该文件将以彩色 HTML 格式保存,包含图像的颜色信息
plt.save_fig("./plot.html")
绘制效果如下图所示:

更多内容可以前往GitHub页面查看:
https://github.com/piccolomo/plotext


本篇文章来源于微信公众号: 码农设计师