python可视化

这里介绍一些经典python可视化库,并附带了自己的主观评价,希望各位酌情使用。待补充

matplotlib

基本功能介绍

Matplotlib是Python中最常用的绘图库之一。首先是
它提供了各种绘图功能和工具,可以用于生成各种类型的图表,如:

  • 折线图:用于展示数据随时间或其他连续变量的变化趋势。
  • 散点图:用于展示两个变量之间的关系和分布情况。
  • 条形图:用于展示不同类别或组之间的数量或比例。
  • 直方图:用于展示连续数据的分布情况。
  • 饼图:用于展示不同类别或组之间的数量或比例,通常用于显示占比。
  • 热图:用于展示二维数据的热度和颜色映射,通常用于显示矩阵或数据矩阵的聚类和分布情况。
  • 箱线图:用于展示数据的分布情况和异常值。
  • 地图:用于展示地理空间数据和统计数据的空间分布情况。
  • 3D图:用于展示三维数据的分布和形态。
  • 动画:用于展示数据的变化和演化过程。
    此外,Matplotlib还可以生成许多其他类型的图表,如极坐标图、子图、轮廓图、极地图等。
    Matplotlib可以操纵很多方面,包括:
  • 图形属性和外观:Matplotlib可以控制图形的大小、分辨率、颜色、线型、标记、字体、标签、注释等。
  • 坐标系和刻度:Matplotlib可以调整坐标系的位置、大小、范围、标度、标签等。
  • 数据和统计分析:Matplotlib可以处理和可视化各种数据类型,如时间序列、多维数组、分类数据、连续数据等,并支持统计分析和数据预处理。
  • 交互性和动态性:Matplotlib可以实现交互式控制和动态更新,如使用鼠标或键盘事件控制绘图,动态修改数据或属性等。
  • 保存和输出:Matplotlib可以将图形输出到多种格式,如PNG、PDF、SVG、EPS等,并支持高质量输出。
  • 嵌入和扩展:Matplotlib可以嵌入到GUI应用程序和Web应用程序中,也可以扩展和自定义绘图功能和样式。

最简单的作图方法

折线图

知道Matplotlib能做到的事后,我们完全可以有需求时再查找相关文档。下面说一些常规操作。
首先是引用,大伙都习惯这么用(照顾下萌新):

import matplotlib.pyplot as plt

然后是简单的作图:

# 创建数据(np是numpy)
x = np.arange(0, 10, 0.1)
y = np.sin(x)

# 绘制折线图
plt.plot(x, y)

我们可以得到:
image

散点图

# 创建数据
x = np.random.rand(50)
y = np.random.rand(50)

# 绘制散点图
plt.scatter(x, y)

image

条形图

# 创建数据
labels = ['A', 'B', 'C', 'D', 'E']
values = [20, 35, 30, 25, 40]

# 绘制条形图
plt.bar(labels, values)

image

直方图

data = np.random.randn(1000)

# 绘制直方图
plt.hist(data)

image

饼图

# 创建数据
lab = ['A', 'B', 'C', 'D', 'E']
values = [20, 35, 30, 25, 40]

# 绘制饼图
plt.pie(values, labels=lab)

image
注意这里必须加“labels=”,否则报错。

热图

# 创建数据
data = np.random.rand(10, 10)

# 绘制热图
plt.imshow(data)

image

箱线图

# 创建数据
data = np.random.randn(100)

# 绘制箱线图
plt.boxplot(data)

image
除3D图之外的感觉用处已经不大且还需要其他辅助,这里不再赘述,3D后面再说。到目前为止,常见的作图类型已经全部介绍完毕,后面将不再把做出来的图插入文中,大伙想要什么图直接对着简图确定好之后再去后面找就行了。

进阶一点的作图

画布与结果显示

首先是如下两个操作:

plt.figure(figsize=(8, 6), dpi=100, facecolor='lightgray',edgecolor='red')
#figsize为大小,dpi为像素,facecolor为背景色,edgecolor为边缘色
# 我们也可如此组创建fig = plt.figure(figsize=(8, 6), dpi=100, facecolor='lightgray'),其便于我们在后续代码中操作这个figure
plt.show()

在Matplotlib中,使用plt.plot等函数时,如果没有提前创建Figure对象,Matplotlib会自动创建一个Figure对象,并将绘图结果显示在该Figure对象上。所以,如果只需要简单的绘图,可以不用显式地创建Figure对象。
虽然Matplotlib会自动创建Figure对象,但是在实际应用中,建议显式地创建Figure对象,并使用Figure对象的方法来控制图形的大小、分辨率等属性。另外,如果需要绘制多个子图或设置复杂的图形布局,也需要使用Figure对象和Axes对象。
至于plt.show,该函数的作用是显示绘图结果,并且该函数会一直阻塞程序,直到关闭绘图窗口为止。比如若我们同时执行两个

plt.boxplot(data)
plt.plot(x, y)

由于figure还是同一个(默认顺序),按照先后,后面的图会画到前面那个图的上方,如下:
image
但如果改成

plt.boxplot(data)
plt.show()
plt.plot(x, y)

两个图就能成功分开,其原因是show使得plt.boxplot做出来的图不再变动就放在那里,于是python只好新做一个figure。
plt.show()之后还可使用plt.close关闭。根据前面plt.figure的用法,应该已经能够控制多次作图了。

坐标系和刻度

Matplotlib可以调整坐标系的位置、大小、范围、标度、标签等。

折线图坐标轴范围、标签、标度

# 绘制折线图,并调整坐标轴范围
plt.plot(x, y)
plt.xlim([0, 10])
plt.ylim([-1, 1])

## 控制坐标轴标度
plt.xscale('log')
plt.yscale('log')

#设置坐标轴标签
plt.xlabel('x', fontsize=12)
plt.ylabel('y', fontsize=12)

Matplotlib 中可以使用 plt.xscale() 和 plt.yscale() 函数将坐标轴设置为对数坐标轴,常用的对数坐标包括:'linear'(线性坐标)、'log'(以10为底的对数坐标)、'symlog'(对数坐标加上一些线性部分)。
而plt.xlabel() 函数可以设置以下参数:

  • xlabel:字符串,用于设置 x 轴标签的文本。
  • fontdict:字典,用于设置 x 轴标签的字体属性。
  • labelpad:标量,用于设置 x 轴标签与 x 轴之间的距离,单位为点(pt)。默认值为 None。
  • fontsize 参数,用于设置 x 轴标签的字体大小。
plt.xlabel('X Label', fontdict={'size': 16, 'weight': 'bold', 'color': 'red'})
# 设置 x 轴标签与 x 轴之间的距离
plt.xlabel('X Label', labelpad=10)
plt.xlabel('X LAbel',fontsize=12)

散点图坐标轴范围、标签

与上面是一样的。

条形图

我们还可使用 plt.xticks() 和 plt.yticks() 函数来设置坐标轴的刻度标签:

  • ticks:数组,用于设置 x 轴刻度的位置。
  • labels:数组,用于设置 x 轴刻度的标签文本。
  • fontdict:字典,用于设置 x 轴刻度的字体属性。
  • rotation:标量,用于设置 x 轴刻度标签的旋转角度,单位为度。默认值为 None。
  • color:颜色,用于设置 x 轴刻度标签的颜色。默认值为 None。如下:
# 设置旋转角度
plt.xticks(x, ['Apple', 'Banana', 'Cherry', 'Durian', 'Eggplant'], rotation=30)
# 设置 x 轴刻度的位置和标签文本
plt.xticks([0, 2, 4, 6, 8, 10], ['0', '2π/5', '4π/5', '6π/5', '8π/5', '2π'])
# 设置 x 轴刻度的字体属性
plt.xticks([0, 2, 4, 6, 8, 10], fontdict={'size': 16, 'weight': 'bold', 'color': 'red'})

常用的基本都写在这里了,剩下一些比较少用的就没写了。

各种图本身的设置

axes对象操作

小众一点作图法(可能有意想不到的效果)

3.30,剩下的慢慢更

seaborn

pyecharts

posted @ 2023-03-30 21:40  臭脚  阅读(149)  评论(0编辑  收藏  举报