乐趣Python——数据可视化:绘制数据的彩虹桥

刚刚我们已经探索了如何用Matplotlib画出美丽的图表,现在,我们将加入Seaborn这位魔法师,一起让我们的数据图表变得更加炫彩夺目!接下来,还有一个非常酷的技能——交互式图表,它可以让我们的图表听话,按照我们的指令动起来!

Matplotlib:绘图利器

基本概念

让我们从最基础的开始,先来安装Matplotlib并进行简单入门使用。

首先,你需要确保你的Python环境已经安装了Matplotlib库。你可以通过运行以下命令来安装Matplotlib:

pip install matplotlib

安装完成后,我们可以开始简单的入门练习。

首先,让我们绘制一个简单的折线图。请尝试运行以下代码:

import matplotlib.pyplot as plt

# x轴数据
x = [1, 2, 3, 4, 5]

# y轴数据
y = [2, 4, 6, 8, 10]

# 创建图表对象
plt.figure()

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

# 显示图表
plt.show()

在这个示例中,我们首先导入了matplotlib.pyplot并给它取了个别名plt,然后创建了一个图表对象。接下来,我们定义了x轴和y轴的数据,并使用plot()函数来绘制折线图。最后,使用show()函数显示图表。

image.png

你可以尝试修改x和y的值,然后重新运行代码,观察图表的变化。

接下来,让我们尝试绘制一个简单的柱状图。请尝试运行以下代码:

import matplotlib.pyplot as plt

# x轴数据
x = ['A', 'B', 'C', 'D', 'E']

# y轴数据
y = [3, 6, 4, 8, 5]

# 创建图表对象
plt.figure()

# 绘制柱状图
plt.bar(x, y)

# 显示图表
plt.show()

在这个示例中,我们使用bar()函数来绘制柱状图。同样,你也可以修改x和y的值,然后重新运行代码,观察图表的变化。

image.png

这只是一个简单的入门示例,展示了如何安装Matplotlib并进行基本的折线图和柱状图绘制。

常用方法

接下来详细介绍如何绘制线图、柱状图、散点图和饼图,并提供完整的代码示例。

绘制线图

首先,让我们看看如何绘制线图。以下是一个完整的代码示例:

import matplotlib.pyplot as plt

# 绘制线图
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
plt.plot(x, y)

# 设置标题、轴标签和图例
plt.title('线图示例')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.legend(['线图'])

# 显示图表
plt.show()

image.png

绘制柱状图

接下来,让我们看看如何绘制柱状图。以下是一个完整的代码示例:

import matplotlib.pyplot as plt

# 绘制柱状图
x = ['A', 'B', 'C', 'D', 'E']
y = [3, 6, 4, 8, 5]
plt.bar(x, y)

# 设置标题、轴标签和图例
plt.title('柱状图示例')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.legend(['柱状图'])

# 显示图表
plt.show()

image.png

绘制散点图

然后,让我们看看如何绘制散点图。以下是一个完整的代码示例:

import matplotlib.pyplot as plt

# 绘制散点图
x = [1, 3, 5, 2, 4]
y = [2, 4, 1, 3, 5]
plt.scatter(x, y)

# 设置标题、轴标签和图例
plt.title('散点图示例')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.legend(['散点图'])

# 显示图表
plt.show()

image.png

绘制饼图 最后,让我们看看如何绘制饼图。以下是一个完整的代码示例:

import matplotlib.pyplot as plt

# 绘制饼图
sizes = [30, 20, 40, 10]
labels = ['A', 'B', 'C', 'D']
plt.pie(sizes, labels=labels, autopct='%1.1f%%')

# 设置标题和图例
plt.title('饼图示例')
plt.legend(labels)

# 显示图表
plt.show()

image.png

绘制区域图

区域图(Area plot)示例:

import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties

# 数据
x = [1, 2, 3, 4, 5]
y1 = [1, 3, 2, 4, 3]
y2 = [0, 2, 1, 3, 2]

# 绘制区域图
plt.fill_between(x, y1, y2, color='blue', alpha=0.3)

# 设置标题、轴标签和图例
plt.title('区域图示例')
plt.xlabel('X轴')
plt.ylabel('Y轴', )
plt.legend(['区域图'])

# 显示图表
plt.show()

image.png

绘制箱线图

箱线图(Box plot)示例:

import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
import numpy as np

# 数据
data = np.random.normal(0, 1, size=(100, 3))

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

# 设置标题和轴标签
plt.title('箱线图示例')
plt.xlabel('变量')
plt.ylabel('值')

# 显示图表
plt.show()

image.png

绘制雷达图

雷达图(Radar chart)示例:

import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
import numpy as np

# 数据
categories = ['A', 'B', 'C', 'D', 'E']
values = np.random.rand(5)

# 绘制雷达图
plt.figure(figsize=(6, 6))
plt.polar(np.append(categories, categories[0]), np.append(values, values[0]), marker='o')

# 设置标题
plt.title('雷达图示例')

# 设置刻度和标签
angles = np.linspace(0, 2 * np.pi, len(categories), endpoint=False).tolist()
angles += angles[:1]
plt.xticks(angles[:-1], categories)

# 显示图表
plt.show()

image.png

绘制热力图

热力图(Heatmap)示例:

import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
import numpy as np

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

# 绘制热力图
plt.imshow(data, cmap='hot', interpolation='nearest')

# 设置标题和颜色刻度
plt.title('热力图示例')
plt.colorbar(label='值')

# 显示图表
plt.show()

image.png

绘制3D图表

3D图表示例(三维线图):

import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
import numpy as np

# 数据
x = np.linspace(-5, 5, 100)
y = np.sin(x)
z = np.cos(x)

# 绘制三维线图
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot(x, y, z)

# 设置标题和轴标签
ax.set_title('三维线图示例')
ax.set_xlabel('X轴')
ax.set_ylabel('Y轴')
ax.set_zlabel('Z轴')

# 显示图表
plt.show()

image.png

运行这些代码后,你应该能够看到使用中文绘制的区域图、箱线图、雷达图、热力图和三维线图。

Matplotlib的子图功能

Matplotlib 的子图功能非常强大,可以将多个图表组合在一起以更好地展示数据。我们可以使用subplots()函数创建图表和子图,并选择不同的布局选项。

请看完整的代码示例:

import matplotlib.pyplot as plt
import numpy as np

# 生成示例数据
x = np.linspace(0, 2 * np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)

# 创建图表和子图
fig, axs = plt.subplots(2, 2)

# 在第一个子图上绘制线图
axs[0, 0].plot(x, y1)
axs[0, 0].set_title('线图')

# 在第二个子图上绘制柱状图
axs[0, 1].bar(x, y2)
axs[0, 1].set_title('柱状图')

# 调整第一个子图的位置
left, bottom, width, height = 0.1, 0.1, 0.8, 0.8
axs[0, 0].set_position([left, bottom, width, height])

# 在第三个子图上绘制散点图
axs[1, 0].scatter(x, y1)
axs[1, 0].set_title('散点图')

# 在第四个子图上绘制饼图
axs[1, 1].pie([1, 2, 3, 4], labels=['A', 'B', 'C', 'D'])
axs[1, 1].set_title('饼图')

# 调整子图之间的间距
plt.tight_layout()

# 显示图表
plt.show()

运行这段代码,你将会看到一个包含4个子图的图表。第一个子图是一个线图,第二个子图是一个柱状图,第三个子图是一个散点图,第四个子图是一个饼图。第一个子图的位置被调整为左上角,以便更好地展示它。

image.png

Seaborn:数据可视化

Seaborn是一个基于Matplotlib的Python数据可视化库,旨在提供一种简单而又美观的界面,帮助用户创建各种统计图表。Seaborn的作用是通过提供高级的接口和预设的主题样式,使得数据可视化变得更加简单和吸引人。

以下是Seaborn的一些主要功能和作用:

  1. 美化图表:Seaborn提供了一些美观且易于使用的默认样式和配色方案,使得绘制出精美的图表变得更加容易。这样可以帮助用户更加专注于数据本身,而不必花费过多时间和精力来调整图表的外观。
  2. 内置主题:Seaborn提供了许多内置的主题风格,用户可以轻松地在图表中切换不同的主题,以满足自己的需求和喜好。这些主题包括经典风格、暗黑风格、白色风格等,可以用来改变图表的整体样式和色彩配置。
  3. 统计图表:Seaborn专注于提供各种统计图表的绘制功能。它支持绘制常见的图表类型,例如线图、柱状图、散点图、箱线图、热力图等。这些图表能够帮助用户更好地理解数据的分布、趋势和关系。
  4. 多变量分析:Seaborn提供了一些特殊的图表类型,用于进行多变量分析和数据探索。例如,通过绘制多变量的散点图矩阵、分组柱状图等,可以帮助用户探索多个变量之间的关系和模式。

*Matplotlib *就像是我们的画笔,可以让我们画出各种数据的图形。它非常灵活,几乎可以画出任何你想要的数据图形。

Seaborn则是这位画家的化妆师,它基于Matplotlib,可以让我们的图表看起来更加优雅和精美。它提供了一些默认的主题和颜色方案,让图表更加美观。

尽管Seaborn是基于Matplotlib构建的,但它为用户提供了更高级的功能和更简洁的语法,可以更快速地创建出具有吸引力和风格一致的图表。它适用于各种数据分析和数据可视化任务,从简单的探索性数据分析到专业的数据报告和演示。

以下是一些可以展示Seaborn作用的示例代码:

美化图表
示例一
import seaborn as sns
import matplotlib.pyplot as plt

# 生成示例数据
x = [1, 2, 3, 4, 5]
y = [5, 4, 3, 2, 1]

# 设置Seaborn的主题样式
sns.set_theme()

# 绘制柱状图
sns.barplot(x=x, y=y)
plt.show()

在这个示例中,我们使用 sns.set_theme() 来设置Seaborn的主题样式,使得图表更加美观。

image.png

示例二
import seaborn as sns

fruits = ['苹果', '香蕉', '橙子', '草莓', '葡萄']
popularity = [75, 85, 90, 100, 95]

sns.barplot(x=fruits, y=popularity, palette="pastel")
plt.title('水果受欢迎程度(Seaborn)')
plt.xlabel('水果')
plt.ylabel('喜爱度')
plt.show()

你会发现,Seaborn自动为我们的图表添加了美观的颜色和优雅的样式!

image.png

示例三

最后,让我们用Seaborn画一个散点图,看看学生的数学成绩和阅读成绩的关系。

import seaborn as sns

# 假设这是一些学生的数学和阅读成绩
math_scores = [65, 78, 88, 75, 66, 90, 82]
reading_scores = [70, 85, 78, 80, 65, 88, 85]

sns.scatterplot(x=math_scores, y=reading_scores, color="blue", s=100)
plt.title('数学成绩 vs 阅读成绩')
plt.xlabel('数学成绩')
plt.ylabel('阅读成绩')
plt.show()

通过Seaborn,我们不仅仅是画出了散点图,还让图表看起来更加漂亮和专业。

image.png

统计图表
import seaborn as sns
import matplotlib.pyplot as plt

# 加载Seaborn内置的数据集
tips = sns.load_dataset("tips")

# 绘制带有回归线的散点图
sns.regplot(data=tips, x="total_bill", y="tip")
plt.show()

在这个示例中,我们使用 sns.regplot() 绘制一个带有回归线的散点图,该图能够展示 total_billtip 之间的关系。

image.png

多变量分析
import seaborn as sns
import matplotlib.pyplot as plt

# 加载Seaborn内置的数据集
iris = sns.load_dataset("iris")

# 绘制多变量散点图矩阵
sns.pairplot(iris, hue="species")
plt.show()

在这个示例中,我们使用 sns.pairplot() 绘制一个多变量散点图矩阵,不同的物种通过颜色表示,从而展示不同变量之间的关系。

image.png

这些示例代码展示了Seaborn在美化图表、绘制统计图表和进行多变量分析等方面的作用。Seaborn提供了许多其他函数和参数,可以进一步定制和美化图表,以满足特定的数据分析需求。

希望这些示例能够更好地展示Seaborn库的作用。

统计可视化功能

下面我将介绍几种常用的统计可视化功能以及如何使用Seaborn的类别图表函数展示分类数据的关系。

直方图和核密度估计图

直方图是一种常用的统计图表,用于展示数值型数据的分布情况。Seaborn提供了 histplot() 函数来绘制直方图,可以通过调整参数来自定义直方图的外观和统计属性。

核密度估计图是对数据密度进行估计的图表,可以用于观察数据的概率密度分布。Seaborn提供了 kdeplot() 函数用于绘制核密度估计图,可以通过参数调整带宽或者拟合的内核函数来调整核密度估计的光滑程度。

import seaborn as sns
import matplotlib.pyplot as plt

# 生成示例数据
data = [1, 2, 2, 3, 3, 3, 4, 4, 5]

# 绘制直方图
sns.histplot(data)
plt.show()

# 绘制核密度估计图
sns.kdeplot(data)
plt.show()

image.png

image.png

小提琴图

小提琴图是一种综合了箱线图和核密度估计图的可视化方式,可以同时展示数据的分布情况和五数概括。Seaborn提供了 violinplot() 函数来绘制小提琴图。

import seaborn as sns
import matplotlib.pyplot as plt

# 加载Seaborn内置的数据集
tips = sns.load_dataset("tips")

# 绘制小提琴图
sns.violinplot(data=tips, x="day", y="total_bill")
plt.show()

image.png

类别图表函数

Seaborn还提供了多个用于展示分类数据关系的图表函数,例如:

  • barplot():绘制柱状图,展示不同类别的均值或者总计数。
  • countplot():绘制计数柱状图,用于展示每个类别的频数。
  • pointplot():绘制点图,可以展示各个类别的中心趋势和置信区间。
import seaborn as sns
import matplotlib.pyplot as plt

# 加载Seaborn内置的数据集
tips = sns.load_dataset("tips")

# 绘制柱状图
sns.barplot(data=tips, x="day", y="total_bill")
plt.show()

# 绘制计数柱状图
sns.countplot(data=tips, x="day")
plt.show()

# 绘制点图
sns.pointplot(data=tips, x="day", y="total_bill", hue="sex")
plt.show()

image.png

image.png

image.png

多图组合和面板绘图

当需要在一个图形中展示多个图表或者对数据的不同子集进行可视化和比较时,可以使用Matplotlib和Seaborn来创建多图组合和面板绘图。下面我将介绍如何使用这两个库来实现这些功能。

多图组合

使用Matplotlib可以轻松实现在一个图形中展示多个子图的功能。可以使用 plt.subplots() 函数创建一个包含多个子图的图形,并在每个子图上绘制相应的数据。

import matplotlib.pyplot as plt
import seaborn as sns

# 示例数据1
data1 = [10, 15, 20, 25, 30]

# 示例数据2
data2 = [1, 2, 3, 4, 5]

# 创建一个包含2个子图的图形
fig, axes = plt.subplots(1, 2)

# 在第一个子图上绘制柱状图
sns.barplot(data=data1, ax=axes[0])

# 在第二个子图上绘制散点图
sns.scatterplot(data=data2, ax=axes[1])

# 设置图形的标题
fig.suptitle("Multiple plots")

# 显示图形
plt.show()

这段代码使用了matplotlibseaborn库来创建一个包含两个子图的图形,并在每个子图上分别绘制柱状图和散点图。 首先,定义了两个示例数据集data1data2,分别代表示例数据1和示例数据2。

然后,使用plt.subplots(1, 2)创建一个包含1行2列的子图网格,并将返回的图形对象和子图对象分别赋值给figaxes。 接下来,使用sns.barplot(data=data1, ax=axes[0])在第一个子图axes[0]上绘制柱状图,其中data参数指定了要绘制的数据。

然后,使用sns.scatterplot(data=data2, ax=axes[1])在第二个子图axes[1]上绘制散点图,其中data参数指定了要绘制的数据。 接着,使用fig.suptitle("Multiple plots")设置整个图形的标题为"Multiple plots"。 最后,使用plt.show()显示图形。

通过这段代码,可以在一个图形中同时展示两个不同数据集的不同类型的可视化图表,方便进行比较和分析。

image.png

面板绘图

Seaborn提供了 FacetGrid 类来实现面板绘图,可以方便地对数据的不同子集进行可视化和比较。FacetGrid 接受一个主绘图对象和一个分面变量,然后根据分面变量的不同值创建多个面板,并在每个面板上绘制相应的数据。

import matplotlib.pyplot as plt
import seaborn as sns

# 示例数据
data = sns.load_dataset('tips')

# 创建一个FacetGrid对象
g = sns.FacetGrid(data=data, col="day")

# 在每个面板上绘制直方图
g.map(sns.histplot, "total_bill")

# 显示图形
plt.show()

这段代码使用了matplotlibseaborn库来创建一个包含多个子图的图形,并在每个子图上绘制直方图。 首先,通过sns.load_dataset('tips')加载了一个示例数据集,该数据集名为'tips,包含了餐厅小费的相关数据。 然后,使用sns.FacetGrid函数创建了一个FacetGrid对象,将数据集data作为参数传入,并指定col="day",表示按照"day"这个变量的值来分割子图。 接下来,使用g.map(sns.histplot, "total_bill")调用FacetGrid对象的map()方法,并传入sns.histplot函数和"total_bill"作为参数。这会在每个子图上绘制直方图,以"total_bill"变量的值为横坐标。 最后,使用plt.show()显示图形。 通过这段代码,可以快速了解每个餐厅小费数据在不同天的分布情况,以及每个子图中直方图的形状和数据分布情况。 希望对您有所帮助!如果还有其他问题,请随时提问。

image.png

总结

Matplotlib是一个功能强大的绘图库,提供了广泛的绘图功能和灵活的绘图控制。以下是一些关于Matplotlib的总结:

多种绘图类型:Matplotlib支持绘制多种类型的图表,包括折线图、散点图、柱状图、饼图等,可以满足多样化的数据可视化需求。

可定制性:Matplotlib提供了丰富的参数和选项,可以自定义图表的外观,包括线条样式、颜色、标签、标题等,使得用户可以根据具体需求定制图表的样式和布局。

二维绘图和三维绘图:Matplotlib支持绘制二维和三维的图表,可以展示复杂的数据关系和模式。

支持多种输出格式:Matplotlib可以将图表保存到多种常见的图片格式中,包括PNG、JPEG、PDF等,方便图表的导出和分享。

而Seaborn是基于Matplotlib的高级绘图库,通过封装Matplotlib的绘图功能,使得绘图更加简化并提供了更加美观的默认样式。以下是一些关于Seaborn的总结:

内置主题和调色板:Seaborn内置了多个美观的主题和调色板,可以轻松地改变整个图表的外观和颜色风格。

统计图表:Seaborn提供了各种统计图表的绘制函数,包括柱状图、箱线图、热力图等,可以方便地进行数据探索和可视化分析。

对分类变量的支持:Seaborn提供了对分类变量的专门支持,包括分组柱状图、小提琴图等,使得对分类数据的可视化更加简单和直观。

内置数据集:Seaborn附带了一些经典的统计数据集,可以直接加载使用,方便进行示例和实践。

综上所述,Matplotlib和Seaborn是两个功能强大的数据可视化库。Matplotlib提供了广泛的绘图功能和灵活性,而Seaborn则提供了更加美观和简化的接口,使得绘图更加方便、快速。根据具体的需求和偏好,可以选择适合自己的库来进行数据可视化。

欢迎关注微信公众号【千练极客】,尽享更多干货文章!

欢迎关注微信公众号【千练极客】,尽享更多干货文章!

欢迎关注微信公众号【千练极客】,尽享更多干货文章!

本文由博客一文多发平台 OpenWrite 发布!

  • 19
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值