matplotlib 绘制散点图(含中文图例)

此博客通过Python的matplotlib库展示了某地区2016年3月和10月的白天最高气温分布,用散点图形式直观对比了两个时期气温变化趋势。3月气温逐渐上升,而10月气温则明显下降,揭示了季节性气候变化规律。

摘要生成于 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]

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


font = {'family':'SimHei',
        'weight':'bold',
        'size':'12'}
plt.rc('font', **font)
plt.rc('axes', unicode_minus=False)

#font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc",size = 14)
x1 = range(1,32)
x2 = range(51,82)
y1 = [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]
y2 = [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]

plt.figure(figsize=(20,8),dpi = 80)

point1=plt.scatter(x1,y1,color='red',linewidth = 2, label="3月份白天最高气温")
point2=plt.scatter(x2,y2,color='blue',linewidth = 2,label="10月份白天最高气温")

_x=list(x1) + list(x2)
_xticks_labels = ["3月{}日".format(i) for i in x1]
_xticks_labels += ["10月{}日".format(i-50) for i in x2]

plt.xticks(_x[::3],_xticks_labels[::3],rotation = 45)#坐标轴标签太密集,需要采用间隔

#plt.xlabel("3、10月")#,FontProperties = font'
plt.ylabel("白天最高气温(℃)")
plt.title("某地区2016年3、10月份白天最高气温分布图")
#plt.legend(handles = [line1,line2],labels =['3月份白天最高气温','10月份白天最高气温'],loc = 'lower right',prop = font)
plt.legend(loc = 'best')

plt.savefig("某地区2016年3、10月份白天最高气温分布图.jpg")
plt.show()

在使用 Matplotlib 绘制散点图时,可以通过 `scatter()` 方法实现,并结合 `legend()` 函数为图例添加说明。以下是一个完整的示例,展示如何自由绘制带有图例散点图: ### 示例代码 ```python import matplotlib.pyplot as plt # 定义数据 x = [1, 2, 3, 4, 5] y = [2, 3, 5, 7, 11] labels = ['A', 'B', 'C', 'D', 'E'] # 创建图形和坐标轴 fig, ax = plt.subplots() # 绘制散点图并分配类别颜色 scatter = ax.scatter(x, y, label=labels, c=['red', 'blue', 'green', 'purple', 'orange']) # 添加图例 handles, labels = scatter.legend_elements(prop="colors") legend = ax.legend(handles, labels, loc="upper right", title="Categories") # 设置标题和标签 ax.set_title('Scatter Plot with Legend') ax.set_xlabel('X-axis') ax.set_ylabel('Y-axis') # 显示图形 plt.show() ``` ### 图例设置的关键点 - 使用 `scatter.legend_elements()` 提取图例的句柄和标签,可以基于颜色、大小等属性生成对应的图例条目。 - 通过 `ax.legend()` 方法将提取的句柄和自定义标签传入,以创建具有特定位置和样式的图例[^2]。 ### 自定义图例样式 除了默认设置,还可以对图例进行更细致的调整,例如: - **位置**:通过 `loc` 参数指定图例的位置(如 `"upper left"` 或 `"lower right"`)。 - **标题**:使用 `title` 参数为图例添加标题。 - **字体大小**:通过 `prop={'size': 12}` 调整图例字体大小。 ### 多组散点图图例 如果需要在同一张图上绘制多个类别的散点,并分别标注图例,可以多次调用 `scatter()` 并为每组数据指定不同的参数,最后统一调用 `plt.legend()`: ```python # 多组数据示例 x1 = [1, 2, 3] y1 = [1, 2, 3] x2 = [4, 5, 6] y2 = [4, 5, 6] # 绘制两组散点图 plt.scatter(x1, y1, color='red', label='Group 1') plt.scatter(x2, y2, color='blue', label='Group 2') # 添加图例 plt.legend(loc='upper left') # 显示图形 plt.show() ``` ### 标记大小与颜色映射 为了进一步增强可视化效果,可以使用 `cmap` 参数配合颜色映射表(如 `plt.cm.RdYlBu`),以及通过 `s` 参数控制标记大小来区分不同类别或数值范围。这种方式适用于数据维度较多的情况,使图表更具信息量[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值