plot(x, y)
函数用于绘制折线图。折线图是一种用来展示连续数据之间关系的图表类型,适用于表示数据随着一个或多个变量的变化而变化的情况。
具体来说,plot(x, y)
函数接受两个参数:
x
:表示X轴上的数据点的值,通常是一个数组或列表,表示自变量的取值。y
:表示Y轴上的数据点的值,也是一个数组或列表,表示因变量随自变量变化的取值。折线图会将这些数据点连接起来,形成一条或多条线,以展示数据的趋势或变化情况。以下是一些常见的折线图样式及其特点:
例如:
import matplotlib.pyplot as plt
import numpy as np
plt.style.use('_mpl-gallery')
# 生成数据
x = np.linspace(0, 10, 100)
y = 4 + 2 * np.sin(2 * x)
# plot
fig, ax = plt.subplots()
ax.plot(x, y, linewidth=2.0)
ax.set(xlim=(0, 8), xticks=np.arange(1, 8),
ylim=(0, 8), yticks=np.arange(1, 8))
plt.show()
scatter(x, y)
函数用于绘制散点图。散点图是一种用于展示两个变量之间关系的图表类型,每个数据点由两个数值(X轴和Y轴上的值)表示,以点的形式在图表上进行表示。
scatter(x, y)
函数接受两个参数:
x
:表示X轴上的数据点的值,通常是一个数组或列表,表示自变量的取值。y
:表示Y轴上的数据点的值,也是一个数组或列表,表示因变量的取值。散点图通过在坐标系中放置单个数据点来展示两个变量之间的关系。以下是一些散点图的特点和用途:
比如生成一个显示汽车速度与制动距离关系的散点图,其中每个数据点表示一个速度-制动距离的对应关系:
import matplotlib.pyplot as plt
# 设置全局字体为支持中文的字体
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定微软雅黑或其他中文字体
# 示例数据:汽车速度与制动距离的关系
speed = [4, 7, 11, 15, 18, 20, 22, 24, 26, 29]
brake_distance = [2, 4, 7, 10, 12, 15, 18, 22, 25, 28]
# 创建散点图
plt.figure(figsize=(8, 6)) # 设置图像大小
plt.scatter(speed, brake_distance, color='blue', marker='o', label='数据点') # 绘制散点图
plt.title('汽车速度与制动距离关系') # 添加标题
plt.xlabel('速度 (mph)') # 添加X轴标签
plt.ylabel('制动距离 (ft)') # 添加Y轴标签
plt.legend() # 显示图例
plt.grid(True) # 添加网格线
plt.show() # 显示图像
在使用scatter(x, y)
函数时,还可以通过设置参数来定制散点图的外观,如点的大小、颜色、标记形状等,以便更好地传达数据的信息。
例如生成一个具有随机数据点、自定义样式和点大小、颜色的散点图:
import matplotlib.pyplot as plt
import numpy as np
# 创建数据
np.random.seed(3)
x = 4 + np.random.normal(0, 2, 24) # 生成24个随机数,以4为中心,标准差为2
y = 4 + np.random.normal(0, 2, len(x)) # 生成与x相同数量的随机数,以4为中心,标准差为2
# 设置点的大小和颜色
sizes = np.random.uniform(15, 80, len(x)) # 生成在15和80之间的随机数作为点的大小
colors = np.random.uniform(15, 80, len(x)) # 生成在15和80之间的随机数作为颜色
# 绘制散点图
fig, ax = plt.subplots() # 创建一个图像和坐标轴的组合
ax.scatter(x, y, s=sizes, c=colors, vmin=0, vmax=100) # 绘制散点图,设置点的大小和颜色的范围
# 设置坐标轴范围和刻度
ax.set(xlim=(0, 8), xticks=np.arange(1, 8),
ylim=(0, 8), yticks=np.arange(1, 8))
plt.show() # 显示图像
bar(x, height)
函数用于绘制条形图(柱状图)。条形图是一种常用的数据可视化方式,用于展示不同类别或组之间的比较。每个条形的高度表示与该类别或组相关联的数值。
bar(x, height)
函数接受两个主要参数:
x
:表示条形的位置,通常是一个数组或列表,表示每个条形的位置。height
:表示每个条形的高度,也是一个数组或列表,表示每个条形的数值。以下是一些关于bar(x, height)
函数的特点和用途:
例如创建一个条形图用于比较不同城市的人口数量和GDP:
import matplotlib.pyplot as plt
import numpy as np
# 设置全局字体为支持中文的字体
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定微软雅黑或其他中文字体
# 示例数据:不同城市的人口数量和GDP
cities = ['City A', 'City B', 'City C', 'City D', 'City E']
population = [1200000, 850000, 1500000, 2000000, 800000]
gdp = [250000, 180000, 320000, 400000, 150000]
# 设置条形图的位置
x_positions = np.arange(len(cities))
# 创建条形图
fig, ax1 = plt.subplots()
# 绘制人口数量的条形
ax1.bar(x_positions - 0.2, population, width=0.4, align='center', color='b', label='人口数量')
# 创建第二个坐标轴以显示GDP数据
ax2 = ax1.twinx()
ax2.bar(x_positions + 0.2, gdp, width=0.4, align='center', color='r', label='GDP')
# 设置图例和标签
ax1.set_xticks(x_positions)
ax1.set_xticklabels(cities)
ax1.set_xlabel('城市')
ax1.set_ylabel('人口数量')
ax2.set_ylabel('GDP')
# 合并图例
lines, labels = ax1.get_legend_handles_labels()
lines2, labels2 = ax2.get_legend_handles_labels()
ax2.legend(lines + lines2, labels + labels2, loc='upper left')
plt.title('城市人口数量和GDP对比')
plt.show()
每个城市在图中由两个相邻的条形表示,左侧的蓝色条形代表人口数量,右侧的红色条形代表GDP。通过双坐标轴的设计,使得两种数据可以在同一图中进行比较,而X轴上的城市名称使得每个条形与相应城市相关联。这个例子演示了如何处理具有多个数据集和双坐标轴的情况。
stem(x, y)
函数用于绘制茎叶图(stem plot),也称为蒂叶图。茎叶图是一种用于可视化数据分布和变化的图表类型,特别适用于展示数据的离散值以及它们的频率分布。
stem(x, y)
函数接受两个参数:
x
:表示X轴上的数据点的值,通常是一个数组或列表,表示数据点的位置。y
:表示Y轴上的数据点的值,也是一个数组或列表,表示数据点的取值。茎叶图的绘制方式是:对每个数据点,将其拆分为茎(高位部分)和叶(个位部分),然后在图表上绘制一个垂直线(茎)和水平线(叶),以表示数据的分布。
茎叶图的特点和用途:
例如:
import matplotlib.pyplot as plt
import numpy as np
# 设置全局字体为支持中文的字体
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定微软雅黑或其他中文字体
# 示例数据:随机生成一组数据
data = np.array([21, 35, 22, 18, 26, 39, 29, 28, 23, 35])
# 创建茎叶图
plt.stem(data)
# 添加标题和标签
plt.title('茎叶图示例')
plt.xlabel('数据索引')
plt.ylabel('数据值')
plt.show()
step(x, y)
函数用于绘制阶梯图(step plot),也被称为阶梯线图或台阶图。阶梯图是一种用于可视化离散数据的图表类型,其特点是数据点之间通过垂直和水平线段连接,而不是平滑的曲线。
step(x, y)
函数接受两个参数:
x
:表示X轴上的数据点的值,通常是一个数组或列表,表示自变量的取值。y
:表示Y轴上的数据点的值,也是一个数组或列表,表示因变量的取值。阶梯图的绘制方式是:对每个数据点,将其前一个数据点的X值作为起点,当前数据点的Y值作为终点,连接这两个点。这样,就可以形成一系列水平线段和垂直线段。
阶梯图的特点和用途:
例如:
import matplotlib.pyplot as plt
import numpy as np
# 设置全局字体为支持中文的字体
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定微软雅黑或其他中文字体
# 示例数据:模拟温度变化
time = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
temperature = np.array([20, 22, 24, 25, 23, 22, 21, 20, 19, 18])
# 创建阶梯图
plt.step(time, temperature, where='mid')
# 添加标题和标签
plt.title('温度变化阶梯图')
plt.xlabel('时间')
plt.ylabel('温度 (°C)')
plt.show()
在这个示例图中,time
数组表示时间点,temperature
数组表示相应时间点的温度。通过plt.step(time, temperature, where='mid')
语句,我们绘制了这些温度变化的阶梯图。where='mid'
参数指定了线段连接到每个数据点的中间位置。其他部分用于添加标题和标签,最后使用plt.show()
显示图像。这个示例演示了如何使用step(x, y)
函数绘制阶梯图,以展示离散数据的变化趋势。
fill_between(x, y1, y2)
函数用于在两个Y轴数据序列之间填充颜色,通常用于表示两个数据序列之间的区域或范围。这个函数可以用于创建各种图表,如误差范围图、置信区间图等。
fill_between(x, y1, y2)
函数接受三个参数:
x
:表示X轴上的数据点的值,通常是一个数组或列表,表示自变量的取值。y1
:表示Y轴上的数据点的值,也是一个数组或列表,表示第一个数据序列的取值。y2
:表示Y轴上的数据点的值,也是一个数组或列表,表示第二个数据序列的取值。fill_between
函数会在y1
和y2
之间的区域填充颜色,从而突出两个数据序列之间的差异或范围。
fill_between
函数的特点和用途:
fill_between
函数非常适用于展示数据序列之间的区间、范围或误差。fill_between
来显示置信区间,即表达数据的预测范围。在下面这个股票价格波动图的例子中,fill_between
函数的目的是用于将股票价格的上限和下限之间的区域填充颜色,以突出价格的波动范围:
import matplotlib.pyplot as plt
import numpy as np
# 设置全局字体为支持中文的字体
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定微软雅黑或其他中文字体
# 示例数据:股票价格走势和价格波动范围
days = np.arange(1, 11)
stock_prices = [100, 105, 110, 108, 112, 115, 120, 118, 125, 123]
price_range = [4, 3, 5, 3, 4, 3, 4, 3, 5, 4]
# 创建股票价格波动图
plt.plot(days, stock_prices, color='b', marker='o', label='股票价格')
plt.fill_between(days, np.subtract(stock_prices, price_range), np.add(stock_prices, price_range), color='lightblue', alpha=0.3, label='价格波动范围')
# 添加标题和标签
plt.title('股票价格走势和价格波动范围')
plt.xlabel('天数')
plt.ylabel('价格')
plt.legend()
plt.show()
首先,我们有每天的股票价格数据列表 stock_prices
,以及每天的价格波动范围列表 price_range
。对于每一天,我们通过从相应的 stock_prices
中减去 price_range
来计算下限值,通过加上 price_range
来计算上限值。这样,我们获得了每天股票价格的下限和上限。
然后,使用 plt.fill_between()
函数,我们将这些下限和上限之间的区域进行填充。fill_between
函数的第一个参数是 X 轴的数据,这里是 days
,第二个参数是 Y 轴的下限,第三个参数是 Y 轴的上限。这使得函数知道在哪个范围内填充颜色。
stackplot(x, y)
函数用于绘制堆叠区域图(stacked area plot),也称为堆积面积图。堆叠区域图适用于展示多个数据序列在相同X轴上的分布情况,并突出不同数据序列的累积贡献。
stackplot(x, y)
函数接受两个参数:
x
:表示X轴上的数据点的值,通常是一个数组或列表,表示自变量的取值。y
:一个列表(或多维数组)的列表,表示每个数据序列在各个X值上的高度。多个数据序列将在图表上堆叠显示。堆叠区域图的绘制方式是:从下到上,按照给定的数据序列顺序,将每个数据序列的高度在X轴上进行累积叠加。
堆叠区域图的特点和用途:
例如:
import matplotlib.pyplot as plt
import numpy as np
# 设置全局字体为支持中文的字体
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定微软雅黑或其他中文字体
# 示例数据:不同年龄段的人口构成
age_groups = ['0-10', '11-20', '21-30', '31-40', '41-50', '51-60', '61+']
male_population = [1500, 2200, 3200, 3000, 2800, 2000, 1800]
female_population = [1400, 2100, 3100, 2900, 2700, 1900, 1700]
other_population = [100, 150, 200, 150, 100, 50, 30]
# 创建人口构成堆叠区域图
plt.stackplot(age_groups, male_population, female_population, other_population,
labels=['男性', '女性', '其他'], colors=['b', 'r', 'g'], alpha=0.7)
# 添加标题和标签
plt.title('不同年龄段的人口构成')
plt.xlabel('年龄段')
plt.ylabel('人口数量')
plt.legend(loc='upper right')
plt.show()
在这个示例中使用plt.stackplot()
函数绘制了人口构成的堆叠区域图,每个数据序列在X轴上叠加显示,通过labels
参数添加图例标签,colors
参数设置不同颜色,alpha
参数设置填充颜色的透明度,以突出不同年龄段的人口构成情况。通过比较不同性别和其他人口在不同年龄段的分布,可以更好地了解人口构成的特点和变化趋势。
imshow(Z)
函数用于显示一个二维数组(或矩阵)Z
,将其表示为彩色或灰度图像。这个函数常用于图像处理、数据可视化、热图等应用场景。
imshow(Z)
函数接受一个参数:
Z
:一个二维数组,表示图像的像素值或数据矩阵。它可以是灰度图像、彩色图像的某个通道,或者表示其他数据的矩阵。imshow
函数的特点和用途:
imshow
函数可用于将二维数组显示为图像,通过不同的像素值映射到不同的颜色,形成可视化结果。Z
是一个数据矩阵时,imshow
函数可以用于绘制热图,通过不同的数据值映射到不同的颜色,帮助显示数据的分布情况。imshow
来显示图像的各种处理结果,如滤波、边缘检测等。以绘制热图(heatmap)为例。热图常用于显示矩阵数据的分布情况,其中矩阵的每个元素通过颜色来表示其值的大小:
import matplotlib.pyplot as plt
import numpy as np
# 设置全局字体为支持中文的字体
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定微软雅黑或其他中文字体
# 示例数据:矩阵数据表示数据强度
matrix_data = np.random.random((10, 10)) # 10x10的随机矩阵数据
# 显示热图
plt.imshow(matrix_data, cmap='hot', origin='upper')
# 添加颜色条
plt.colorbar()
# 添加标题和标签
plt.title('数据强度热图')
plt.xlabel('列')
plt.ylabel('行')
plt.show()
对于这个示例,matrix_data
是一个随机生成的10x10矩阵,表示不同位置的数据强度。通过使用imshow(matrix_data, cmap='hot', origin='upper')
,将矩阵数据绘制成了一个热图,其中不同颜色表示不同的数据强度。cmap
参数指定了使用热色彩映射,origin
参数指定了坐标原点在图像的上方。
hist(x)
函数用于绘制直方图,用于展示数据的分布情况,特别是连续型数据的频率分布。直方图将数据范围划分为多个区间(称为“箱子”或“bin”),然后统计每个区间中数据的数量或频率。
hist(x)
函数接受一个参数:
x
:一个一维数组或列表,表示要绘制直方图的数据。hist
函数的特点和用途:
hist
函数可以将数据的分布情况以直观的方式展示出来,帮助了解数据的中心趋势、离散程度以及异常值等。hist
函数可以显示每个区间内数据的频率,帮助你分析数据在不同值范围内的密度。例如分析学生考试成绩分布情况:
import matplotlib.pyplot as plt
import numpy as np
# 设置全局字体为支持中文的字体
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定微软雅黑或其他中文字体
# 示例数据:学生考试成绩
exam_scores = np.random.randint(0, 100, 200) # 随机生成200个考试成绩
# 绘制直方图
plt.hist(exam_scores, bins=10, color='green', edgecolor='black')
# 添加标题和标签
plt.title('学生考试成绩分布')
plt.xlabel('分数范围')
plt.ylabel('学生人数')
plt.show()
使用plt.hist(exam_scores, bins=10, color='green', edgecolor='black')
函数绘制了直方图,bins
参数指定了要使用的区间数量,color
参数设置了柱子的填充颜色,edgecolor
参数设置了柱子的边框颜色。
pie(x)
函数用于绘制饼图(pie chart),用于显示数据的相对比例。饼图通过将数据按照不同的比例分成扇形,以表示各个部分在整体中的贡献。饼图常用于展示分类数据的分布情况。
pie(x)
函数接受一个参数:
x
:一个包含各个部分比例的一维数组或列表,表示要绘制饼图的数据。pie
函数的特点和用途:
pie
函数适用于展示不同部分在整体中的比例关系,特别是当你关注数据的相对贡献时。比如需要进行能源分析,了解一个城市的不同能源类型在总能源供应中的比例,以及不同能源对环境的影响:
import matplotlib.pyplot as plt
import numpy as np
# 设置全局字体为支持中文的字体
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定微软雅黑或其他中文字体
# 示例数据:城市能源供应结构比例
energy_sources = ['煤炭', '石油', '天然气', '核能', '可再生能源']
proportions = [30, 25, 20, 10, 15] # 各个能源的供应比例
# 绘制饼图
plt.pie(proportions, labels=energy_sources, autopct='%1.1f%%', startangle=140, colors=['gray', 'pink', 'blue', 'green', 'orange'])
# 添加标题
plt.title('城市能源供应结构')
plt.axis('equal') # 使饼图保持圆形
plt.show()
在上图中,使用plt.pie(proportions, labels=energy_sources, autopct='%1.1f%%', startangle=140, colors=['gray', 'black', 'blue', 'green', 'orange'])
函数绘制了饼图,labels
参数指定了每个扇形的标签,autopct
参数设置了百分比显示格式,startangle
参数设置了饼图的起始角度,colors
参数设置了每个扇形的颜色。
contour(X, Y, Z)
和contourf(X, Y, Z)
函数用于绘制等高线图(contour plot)和填充等高线图(filled contour plot),用于表示二维数据的等高线分布。等高线图在可视化数据表面的高度或数值分布时非常有用。
这两个函数的参数如下:
X
和Y
:表示二维数据的网格点坐标,通常是由numpy.meshgrid
函数生成的两个二维数组。Z
:一个与X
和Y
对应的二维数组,表示要绘制等高线的数据值。contour(X, Y, Z)
函数的特点和用途:
contour
函数用于绘制等高线图,其中等高线表示数据表面上的高度或数值分布。contourf(X, Y, Z)
函数的特点和用途:
contourf
函数用于绘制填充等高线图,其中不同等高线之间的区域被填充颜色,以突出数据值的分布。cmap
参数指定颜色映射。假设想要绘制一个地区的地形高度分布图,包括等高线图和填充等高线图,以便更好地理解地势起伏情况:
import matplotlib.pyplot as plt
import numpy as np
# 设置全局字体为支持中文的字体
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定微软雅黑或其他中文字体
# 设置负号为标准的减号
plt.rcParams['axes.unicode_minus'] = False
# 创建网格点坐标
x = np.linspace(-5, 5, 300)
y = np.linspace(-5, 5, 300)
X, Y = np.meshgrid(x, y)
# 示例数据:地形高度
Z = np.sin(np.sqrt(X**2 + Y**2)) + np.cos(np.sqrt(X**2 + Y**2))
# 创建绘图区域
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5))
# 绘制等高线图
contour1 = ax1.contour(X, Y, Z, levels=20, colors='black')
ax1.set_title('等高线图')
ax1.set_xlabel('X轴')
ax1.set_ylabel('Y轴')
# 绘制填充等高线图
contourf = ax2.contourf(X, Y, Z, levels=20, cmap='viridis')
ax2.set_title('填充等高线图')
ax2.set_xlabel('X轴')
ax2.set_ylabel('Y轴')
# 添加颜色条
cbar = plt.colorbar(contourf, ax=ax2)
cbar.set_label('高度')
plt.tight_layout()
plt.show()
注意,以上只是一些基本的Matplotlib所能绘制的图形类型,它还可以与很多其他库结合使用,绘制更多更加复杂的图形。
感谢你能看到最后,给大家准备了一些福利!
感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。
CSDN大礼包:全网最全《Python学习资料》免费赠送!(安全链接,放心点击)
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python兼职渠道推荐*
学的同时助你创收,每天花1-2小时兼职,轻松稿定生活费.
三、最新Python学习笔记
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、实战案例
纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
CSDN大礼包:全网最全《Python学习资料》免费赠送!(安全链接,放心点击)
若有侵权,请联系删除