03.13面积图+堆叠面积图+散点图+气泡图

## 面积图
# 导入所需的库
import numpy as np
import matplotlib.pyplot as plt

# 创建数据
x = range(1, 6, 1)
y = [1, 4, 6, 8, 4]

# 绘制面积图
# plt.fill_between()函数用于绘制面积图
# 参数x和y分别表示x轴和y轴的数据
# 该函数会在x轴和y轴之间填充颜色,形成一个面积图
plt.fill_between(x, y)

# 显示图形
plt.show()

## 堆叠面积图
# 导入所需的库
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.ticker as mticker

# 数据来源:联合国世界人口展望(2019年修订版)
# 数据来源网址:https://population.un.org/wpp/
# 定义数据
year = [1950, 1960, 1970, 1980, 1990, 2000, 2010, 2018]
population_by_continent = {
    'Africa': [.228, .284, .365, .477, .631, .814, 1.044, 1.275],
    'the Americas': [.340, .425, .519, .619, .727, .840, .943, 1.006],
    'Asia': [1.394, 1.686, 2.120, 2.625, 3.202, 3.714, 4.169, 4.560],
    'Europe': [.220, .253, .276, .295, .310, .303, .294, .293],
    'Oceania': [.012, .015, .019, .022, .026, .031, .036, .039],
}

# 创建图形和坐标轴对象
fig, ax = plt.subplots()

# 绘制堆叠面积图
# ax.stackplot()函数用于绘制堆叠面积图
# 参数year表示x轴数据,population_by_continent.values()表示y轴数据
# labels参数设置每个大洲的标签
# alpha参数设置透明度,0.8表示半透明
ax.stackplot(year, population_by_continent.values(),
             labels=population_by_continent.keys(), alpha=0.8,
             colors=['#FFD8E4', '#B3E5FC', '#E8F5E9', '#FFF3E0', '#E0F2F1'])  # 马卡龙色系


# 添加图例
# loc参数设置图例位置为左上角
# reverse参数设置为True,使图例顺序与堆叠顺序一致
ax.legend(loc='upper left')

# 设置图表标题
ax.set_title('World population')

# 设置x轴标签
ax.set_xlabel('Year')

# 设置y轴标签
ax.set_ylabel('Number of people (billions)')

# 在y轴上每隔2亿人添加一个次刻度
ax.yaxis.set_minor_locator(mticker.MultipleLocator(.2))

# 显示图形
plt.show()

## 散点图
# 导入所需的库
import numpy as np
import matplotlib.pyplot as plt

# 定义数据点的数量
N = 21

# 使用numpy的linspace函数生成x轴的数据点,从0到10,共11个点
x = np.linspace(0, 10, 11)

# 定义y轴的数据点,是一个包含11个值的列表
y = [3.9, 4.4, 10.8, 10.3, 11.2, 13.1, 14.1, 9.9, 13.9, 15.1, 12.5]

# 使用numpy的polyfit函数进行线性拟合
# deg=1表示拟合一个一次多项式(即线性拟合)
# 返回值a和b分别是拟合直线的斜率和截距
a, b = np.polyfit(x, y, deg=1)

# 根据拟合的参数计算每个x值对应的估计y值
# y_est = a * x + b
y_est = a * x + b

# 计算估计值的误差范围
# y_err表示每个点的误差估计值,基于x的标准差和样本大小
# 公式来源于线性回归的标准误差计算
y_err = x.std() * np.sqrt(1/len(x) +
                          (x - x.mean())**2 / np.sum((x - x.mean())**2))

# 创建图形和坐标轴对象
fig, ax = plt.subplots()

# 绘制拟合的直线
# 使用plot函数绘制拟合直线,'-'表示实线
ax.plot(x, y_est, '-')

# 使用fill_between函数绘制误差范围的填充区域
# alpha参数设置填充区域的透明度为0.2
ax.fill_between(x, y_est - y_err, y_est + y_err, alpha=0.2)

# 绘制原始数据点
# 使用plot函数绘制原始数据点,'o'表示圆点标记,颜色设置为棕色
ax.plot(x, y, 'o', color='tab:brown')

# 显示图形
plt.show()

 

## 气泡图
# 导入所需的库
import numpy as np
import matplotlib.pyplot as plt

# 设置随机数据点的数量
N = 45

# 生成随机数据
# np.random.rand(2, N)生成两行N列的随机数,分别作为x和y坐标
x, y = np.random.rand(2, N)
# 生成随机颜色分类,范围从1到4,共N个
c = np.random.randint(1, 5, size=N)
# 生成随机大小,范围从10到220,共N个
s = np.random.randint(10, 220, size=N)

# 创建图形和坐标轴对象
fig, ax = plt.subplots()

# 绘制气泡图
# c参数设置颜色,根据分类c进行颜色映射
# s参数设置大小,根据大小s调整气泡的面积
scatter = ax.scatter(x, y, c=c, s=s)

# 为颜色分类生成图例
# scatter.legend_elements()返回用于图例的颜色和标签
# loc参数设置图例位置为左下角
# title参数设置图例标题为"Classes"
legend1 = ax.legend(*scatter.legend_elements(),
                    loc="lower left", title="Classes")
# 添加图例到坐标轴
ax.add_artist(legend1)

# 为大小生成图例
# scatter.legend_elements(prop="sizes")返回用于图例的大小和标签
# loc参数设置图例位置为右上角
# title参数设置图例标题为"Sizes"
handles, labels = scatter.legend_elements(prop="sizes", alpha=0.6)
legend2 = ax.legend(handles, labels, loc="upper right", title="Sizes")

# 显示图形
plt.show()

 

       通过对面积图、堆叠面积图、散点图和气泡图的学习与实践,我深刻体会到了数据可视化在数据分析中的强大作用和独特魅力。每种图表类型都有其独特的应用场景和优势,能够以直观的方式呈现复杂数据的不同方面。

        面积图和堆叠面积图通过填充颜色展示数据的范围和变化趋势,非常适合用于展示随时间或其他变量变化的数据量;堆叠面积图进一步通过堆叠的方式展示各部分对整体的贡献,帮助我们理解数据的结构和比例关系;散点图则通过点的位置展示两个变量之间的关系;而气泡图则在此基础上增加了第三个维度(大小)甚至第四个维度(颜色),能够更丰富地展示数据之间的复杂关系。这些图表不仅帮助我们快速识别数据中的模式、趋势和异常,还能通过颜色、大小等视觉元素增强信息的传达效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值