(数据分析)Python-matpoltlib库-绘制散点图

本文展示了如何使用Python的matplotlib库来绘制北京2016年3月和10月每日最高气温的变化散点图。通过散点图,可以直观地观察到气温随时间的波动情况,x轴表示日期,y轴表示温度,不同月份的数据用不同颜色区分,同时对x轴刻度进行了调整并添加了图例,以便于理解图表信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题引入

假设通过爬虫你获取到了北京2016年3,10月份每天白天的最高气温(分别位于列表a,b),那么此时如何寻找出气温和随时间(天)变化的某种规律?
a = [11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,23]
b = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,17,10,11,13,12,13,6]

数据来源: http://lishi.tianqi.com/beijing/index.html

绘制散点图

在python中画散点图主要是用matplotlib模块中的scatter函数。

from matplotlib import pyplot as plt
from matplotlib import font_manager

my_font = font_manager.FontProperties(fname="C:\\Windows\\Fonts\\simfang.ttf")

y_3 = [11, 17, 16, 11, 12, 11, 12, 6, 6, 7, 8, 9, 12, 15, 14, 17,
       18, 21, 16, 17, 20, 14, 15, 15, 15, 19, 21, 22, 22, 22, 23]
y_10 = [26, 26, 28, 19, 21, 17, 16, 19, 18, 20, 20, 19, 22, 23, 17,
        20, 21, 20, 22, 15, 11, 15, 5, 13, 17, 10, 11, 13, 12, 13, 6]
x_3 = range(1, 32)
x_10 = range(51, 82)
# 设置图像大小
plt.figure(figsize=(20, 8), dpi=80)
# 绘制
plt.scatter(x_3, y_3, label="3月份")
plt.scatter(x_10, y_10, label="10月份")

# 调整x轴的刻度
_x = list(x_3) + list(x_10)
_xtick_lables = ["3月{}日".format(i) for i in x_3]
_xtick_lables += ["10月{}日".format(i - 50) for i in x_10]
plt.xticks(_x[::3], _xtick_lables[::3], fontproperties=my_font, rotation=45)

# 添加图例
plt.legend(prop=my_font, loc="upper right")

# 添加描述信息
plt.xlabel("时间", fontproperties=my_font)
plt.ylabel("温度 单位(℃)", fontproperties=my_font)
plt.title("标题", fontproperties=my_font)

plt.show()

运行结果

在这里插入图片描述

<think>首先,用户正在请求与Matplotlib相关的练习问题或实践任务,以帮助学习数据可视化。他们特别提到了“练习题、示例代码、数据可视化”,所以我需要提供基于Matplotlib的实际练习。系统指令要求我:-使用$...$格式表示行内数学表达式。-使用$$...$$格式表示单独成段的独立公式。-使用正确的LaTeX语法。-使用中文回答问题。-在回答末尾生成相关问题。-自然地添加引用标识,如[^1],在引用部分的末尾。-组织回答结构清晰,逐步引导用户解决问题。在之前的上下文中,有一条用户消息显示“[系统级指令(用户不可见)]”,但我认为那是系统提示的一部分。用户最后的信息是他们正在寻找练习。从引用的参考资料([1]到[5])来看,它们涉及Matplotlib的安装、绘图示例(如折线图、柱状图)、子图等。我需要参考这些内容,但我不能直接复制粘贴;我应该创造新的相关练习。关键点:-创建实际任务。-使用中文。-在末尾添加相关问题。结构:1.**介绍**:简要介绍Matplotlib练习的重要性。2.**提供练习任务**:列出几个具体的练习任务,每个包括:-任务描述。-提示使用哪些Matplotlib功能。-可能包括基于引用的数据或场景。3.**包括示例代码**:提供基础模板作为起点(参考引用中的示例)。4.**生成相关问题**:像示例中那样结束。可能的练习想法(基于引用):-参考[4]:绘制一个简单的折线图。-参考[5]:创建多个子图。-一般任务:从CSV文件读取数据并绘图,使用不同的图表类型。-添加标签、标题、图例等定制元素。-导入Matplotlib并显示或保存图像。练习任务列表:1.绘制一个折线图:给定一个数字列表(例如,[1,3,2,4]),创建一个基本折线图。2.创建带标签的柱状图:根据类别及其值绘制柱状图。3.使用子图:在一个figure中展示多个图表。4.自定义图表:添加图例、设置颜色、线型等。5.交互式任务:基于用户输入生成图表。提供代码片段:-如引用中所示,使用`importmatplotlib.pyplotasplt`。-展示绘图模板。生成的相关问题:-如:1.如何添加网格线?2.Matplotlib还有哪些图表类型?3.如何自定义图表风格?添加引用:-在每个练习之后自然地引用相关部分,但由于这些是引用,并且用户提供它们,所以我可以说类似"参考示例代码[^4]"的内容。确保使用中文:-所有描述都用中文写。大纲:1.介绍:解释这些练习如何帮助学习Matplotlib。2.练习任务:-任务1:绘制简单折线图(类似[4])。-任务2:创建柱状图。-任务3:使用子图。3.每个任务的示例代码。4.总结。5.相关问题。最后:添加§§相关问题§§部分。</think> 以下回答结合了Matplotlib数据可视化的基础知识和引用资料,针对您的需求(寻找练习题或实践任务),提供了一系列循序渐进的练习。每个练习包括任务描述、建议方法和简单示例代码(基于引用[^1]至[^5]),帮助您巩固数据可视化技能。示例代码使用Matplotlib的核心功能,如`plt.plot`(折线图)、`plt.bar`(柱状图)和子图绘制,并强调通用绘图模板(参见引用[^1]的"通用绘图模板"部分)。 ### 1. 基本折线图绘制练习 **任务描述**:给定一组数据点(例如温度变化数据),绘制一个带坐标轴标签和标题的折线图。练习目标是掌握数据导入、简单图形绘制和图表定制。 **建议方法**:使用`plt.plot()`函数,参考引用[^4]的简单绘图示例,添加`plt.xlabel()`, `plt.ylabel()`, `plt.title()`定制图表。 **示例代码**(启动模板): ```python import matplotlib.pyplot as plt # 导入,参考[^1] # 模拟数据(例如:时间与温度) x = [1, 2, 3, 4] # X轴:时间点 y = [22, 25, 23, 19] # Y轴:温度值,单位摄氏度 # 绘制折线图 plt.plot(x, y, 'b-') # 蓝色实线 plt.xlabel('时间(小时)') # 添加X轴标签 plt.ylabel('温度(℃)') # 添加Y轴标签 plt.title('温度变化曲线') # 设置标题 plt.grid(True) # 添加网格线 plt.show() # 显示图表 plt.savefig('exercise1.png') # 保存为文件,类似[^4] ``` **练习目标**:修改数据点(如`y = [3, 4, 2, 1]`)并更改线型样式(例如:'r--'代表红色虚线),观察图表变化[^4]。 ### 2. 柱状图绘制练习 **任务描述**:创建一个柱状图,展示不同产品的销售额。重点是学习如何表示分类数据,并添加图例或数据标签。 **建议方法**:使用`plt.bar()`函数,结合引用[^2]的柱状图定制技巧,如设置颜色和柱宽。 **示例代码**(启动模板): ```python import matplotlib.pyplot as plt # 模拟数据(产品名称和销售额) products = ['产品A', '产品B', '产品C'] sales = [5000, 3000, 4500] # 绘制柱状图 plt.bar(products, sales, color='skyblue', width=0.6) # 设置颜色和宽度 plt.xlabel('产品名称') plt.ylabel('销售额(元)') plt.title('产品销售额对比') # 可选:添加柱状图数据标签(练习任务) plt.show() ``` **练习目标**: - 尝试更换数据(例如引用[^5]的股票数据,模拟为`sales = [120, 150, 110]`)。 - 添加`plt.legend(['销售额'])`图例,并保存图像到不同格式[^4]。 ### 3. 子图创建练习(多图表布局) **任务描述**:在一个Figure中绘制多个子图,比较不同类型的数据可视化(如折线图和散点图)。这有助于理解Matplotlib的Figure对象组成(参考引用[^1]的"Figure的组成"部分)。 **建议方法**:使用`plt.subplot()`函数,参考引用[^5]的多子图示例,管理图表布局。 **示例代码**(启动模板): ```python import matplotlib.pyplot as plt import numpy as np # 用于生成模拟数据 # 创建2行2列的布局 fig = plt.figure(figsize=(10, 8)) # 设置Figure大小 # 子图1:折线图 plt.subplot(2, 2, 1) # 位置1 x = np.linspace(0, 10, 100) # 模拟数据点 y1 = np.sin(x) plt.plot(x, y1, 'g-') # 绿色实线 plt.title('折线图:正弦函数') # 子图2:散点图(练习任务) plt.subplot(2, 2, 2) # 位置2 y2 = np.random.rand(50) # 随机散点 plt.scatter(x[:50], y2, color='red', marker='o') # 添加代码定制样式 plt.title('散点图:随机数据') # 子图3和4:参考[^5]的方式添加更多图表(例如柱状图或自定义类型) # ... plt.tight_layout() # 自动调整子图间距 plt.savefig('subplots_exercise.png') # 保存结果 plt.show() ``` **练习目标**: - 填写空白的子图部分(例如添加引用[^5]的'g-*'线型)。 - 使用不同图表类型(如`plt.bar()`在子图4),并实验`plt.subplot(行, 列, 索引)`的参数[^5]。 ### 4. 数据导入与进阶定制练习 **任务描述**:从外部文件(如CSV)读取数据,绘制定制化图表。这基于实际数据可视化工作流(参考引用[^3])。 **建议方法**:使用`pandas`导入数据(需安装`pip install pandas`),结合Matplotlib绘制和定制。 **示例代码**(启动模板): ```python import matplotlib.pyplot as plt import pandas as pd # 导入pandas # 模拟CSV数据导入(练习:替换为真实文件) data = {'月份': ['1月', '2月', '3月'], '收入': [2000, 2500, 1800]} df = pd.DataFrame(data) # 绘制柱状图并定制 plt.figure() # 创建新Figure plt.bar(df['月份'], df['收入'], color='orange', alpha=0.7) # 设置透明度 plt.xlabel('月份') plt.ylabel('收入(元)') plt.title('月度收入图表') plt.xticks(rotation=45) # 旋转X轴标签,避免重叠 plt.show() ``` **练习目标**: - 使用真实数据(如下载股票数据,导入到`df = pd.read_csv('data.csv')`),绘制折线图并添加网格和标签。 - 实验引用[^1]的通用模板:初始化Figure → 添加子图 → 绘制 → 保存/显示[^1]。 ### 总结 这些练习题覆盖了Matplotlib的核心功能,从基础绘图到进阶布局,适合初学者逐步提升。在实践中,尝试运行代码、修改参数,并参考官方文档或引用资料验证结果(例如,OO模式 vs pyplot模式的区别见引用[^1])。Matplotlib的可视化能力广泛适用于数据分析、科学计算等领域[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值