通过Python绘制不同数据类型适合的可视化图表

在数据可视化中,对于描述数值变量与数值变量之间的关系常见的有散点图和热力图,以及描述数值变量与分类变量之间的关系常见的有条形图,饼图和折线图,可以通过使用Python的matplotlibseaborn库来绘制图表进行可视化表达,接下来分别对这些类型进行举例演示。

一:数值变量与数值变量

1:散点图 (Scatter Plot) - 展示两个数值变量之间的关系

使用Python的Matplotlib库来绘制这个散点图。首先,我会生成一些模拟数据来代表身高和体重,然后使用Matplotlib绘制散点图。

python 复制代码
import matplotlib.pyplot as plt
import numpy as np

# 生成模拟数据
np.random.seed(0)
height = np.random.normal(170, 10, 100)  # 身高数据,平均身高170cm,标准差10cm
weight = np.random.normal(70, 15, 100)   # 体重数据,平均体重70kg,标准差15kg

# 绘制散点图
plt.figure(figsize=(10, 6))
plt.scatter(height, weight, color='blue', alpha=0.5)
plt.title('身高与体重的关系')
plt.xlabel('身高 (cm)')
plt.ylabel('体重 (kg)')
plt.grid(True)
plt.show()

结果如下:

这是一个简单的散点图示例,展示了身高和体重之间的关系。在这个图中,每个点代表一个数据点,其横坐标表示身高,纵坐标表示体重。通过这个图表,我们可以初步观察身高和体重之间的分布模式。

2:热力图 (Heatmap) - 展示两个数值变量的联合分布

要绘制一个热力图,我们需要以下信息:

  1. 数据集:热力图通常用于展示二维数据集,其中每个数据点都有一个值,这个值将被映射到颜色上。
  2. 颜色映射:确定如何将数据值映射到不同的颜色。
  3. 标题和标签:为图表设定一个清晰的标题,以及X轴和Y轴的标签,以便于理解。

基于以上几点,我将创建一个简单的热力图示例。假设我们有一个简单的二维数据集,我们想要通过热力图来展示这个数据集的值分布。

python 复制代码
import matplotlib.pyplot as plt
import numpy as np

# 生成模拟数据
np.random.seed(0)
data = np.random.rand(10, 10)  # 10x10的二维数据集

# 绘制热力图
plt.figure(figsize=(8, 6))
plt.imshow(data, cmap='hot', interpolation='nearest')
plt.colorbar(label='值')
plt.title('热力图示例')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.show()

结果如下:

这是一个简单的热力图示例,展示了10x10二维数据集的值分布。在这个图中,每个方格代表数据集中的一个数据点,其颜色深浅表示该数据点的值大小。颜色越深,值越大;颜色越浅,值越小。

二:类别变量与数值变量

1:堆叠条形图 (Stacked Bar Chart) - 展示多个类别变量的数值分布

堆叠条形图是一种特殊的条形图,其中每个条形代表多个数据系列的总和,每个系列以不同的颜色堆叠在一起。要绘制一个堆叠条形图,我们需要以下信息:

  1. 数据集:包含多个数据系列的二维数据集,其中每个系列都有一个或多个数据点。
  2. 类别标签:用于X轴的标签,表示每个条形代表的类别。
  3. 系列标签:用于图例,表示每个数据系列的名称。

基于以上几点,我将创建一个简单的堆叠条形图示例。假设我们有一个关于不同产品的销售数据,包括三个季度的销售额。

python 复制代码
import matplotlib.pyplot as plt
import numpy as np

# 生成模拟数据
np.random.seed(0)
products = ['产品A', '产品B', '产品C', '产品D']
q1_sales = np.random.randint(50, 100, len(products))
q2_sales = np.random.randint(50, 100, len(products))
q3_sales = np.random.randint(50, 100, len(products))

# 计算堆叠的底部位置
bar_width = 0.25
index = np.arange(len(products))

# 绘制堆叠条形图
plt.figure(figsize=(10, 6))
plt.bar(index, q1_sales, bar_width, label='Q1')
plt.bar(index, q2_sales, bar_width, bottom=q1_sales, label='Q2')
plt.bar(index, q3_sales, bar_width, bottom=q1_sales+q2_sales, label='Q3')

# 设置图表标题和标签
plt.title('产品季度销售数据堆叠条形图')
plt.xlabel('产品')
plt.ylabel('销售额')
plt.xticks(index, products)
plt.legend()

plt.show()

结果如下:

这是一个简单的堆叠条形图示例,展示了不同产品在三个季度的销售额。在这个图中,每个产品对应一个条形,每个条形的不同颜色部分代表不同季度的销售额。通过这个图表,我们可以直观地比较不同产品在不同季度的销售情况。

2:饼图 (Pie Chart) - 展示一个或多个类别变量的分布

要绘制一个饼图,我们需要以下信息:

  1. 数据集:一个包含各个部分数值的数据集。
  2. 标签:每个部分对应的标签,用于在饼图上标记。
  3. 颜色:可选,为每个部分指定颜色。

基于以上几点,我将创建一个简单的饼图示例。假设我们有一个关于不同水果销售量的数据集,我们想要通过饼图来展示每种水果的销售比例。

python 复制代码
import matplotlib.pyplot as plt

# 生成模拟数据
fruits = ['苹果', '香蕉', '橙子', '葡萄', '草莓']
sales = [30, 25, 20, 15, 10]

# 绘制饼图
plt.figure(figsize=(8, 6))
plt.pie(sales, labels=fruits, autopct='%1.1f%%', startangle=140)
plt.title('水果销售比例饼图')
plt.show()

结果如下:

这是一个简单的饼图示例,展示了不同水果的销售比例。在这个图中,每种水果的销售量被表示为一个扇形,其大小对应于该水果的销售比例。通过这个图表,我们可以直观地看到各种水果在总销售量中的占比。

3:折线图 (Line Chart) - 展示数值变量随时间或有序类别变量的变化

要绘制一个折线图,我们需要以下信息:

  1. 数据集:至少包含两个变量的数据集,通常一个用于X轴,一个用于Y轴。
  2. 标题和标签:为图表设定一个清晰的标题,以及X轴和Y轴的标签,以便于理解。
  3. 线条样式和颜色:可选,用于区分不同的数据系列。

基于以上几点,我将创建一个简单的折线图示例。假设我们有一个关于某城市一周内每天温度的数据集,我们想要通过折线图来展示这一周温度的变化趋势。

python 复制代码
import matplotlib.pyplot as plt
import numpy as np

# 生成模拟数据
days = ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
temperatures = np.random.uniform(15, 30, len(days))  # 温度数据,假设在15°C到30°C之间

# 绘制折线图
plt.figure(figsize=(10, 6))
plt.plot(days, temperatures, marker='o', color='b')
plt.title('一周内每天温度变化折线图')
plt.xlabel('星期')
plt.ylabel('温度 (°C)')
plt.grid(True)
plt.show()

结果如下:

这是一个简单的折线图示例,展示了某城市一周内每天的温度变化。在这个图中,横轴表示星期,纵轴表示温度。每个点代表对应星期的温度,点与点之间的线条显示了温度的变化趋势。

以上就是通过使用Python的matplotlib库来绘制图表描述数值变量与数值变量之间的关系和数值变量与分类变量之间的关系。

点下关注,分享更多有关AI,数据分析和量化金融相关的实用教程和项目。

相关推荐
胡耀超10 分钟前
霍夫圆变换全面解析(OpenCV)
人工智能·python·opencv·算法·计算机视觉·数据挖掘·数据安全
doupoa22 分钟前
Fabric 服务端插件开发简述与聊天事件监听转发
运维·python·fabric
How_doyou_do34 分钟前
备战菊厂笔试4
python·算法·leetcode
(・Д・)ノ1 小时前
python打卡day27
开发语言·python
小oo呆2 小时前
【学习心得】Jupyter 如何在conda的base环境中其他虚拟环境内核
python·jupyter·conda
小白学大数据3 小时前
Scrapy框架下地图爬虫的进度监控与优化策略
开发语言·爬虫·python·scrapy·数据分析
浊酒南街3 小时前
TensorFlow之微分求导
人工智能·python·tensorflow
立秋67893 小时前
用Python绘制梦幻星空
开发语言·python·pygame
alpszero3 小时前
YOLO11解决方案之对象裁剪探索
人工智能·python·计算机视觉·yolo11
白云千载尽4 小时前
相机、雷达标定工具,以及雷达自动标定的思路
python·自动驾驶·ros