赞
踩
matplotlib是一个功能强大的Python绘图库,用于创建各种类型的图形和可视化数据。它提供了广泛的绘图功能和灵活的配置选项,可以满足不同需求下的数据可视化需求。
matplotlib的主要特点包括:
简单易用:matplotlib的API设计简单直观,使用起来非常方便。它的语法和Matlab绘图库相似,对于熟悉Matlab的用户来说更容易上手。
多种图形类型:matplotlib支持多种类型的图形,包括折线图、散点图、柱状图、饼图、直方图、箱线图、热力图等。用户可以根据数据类型和需求选择合适的图形类型。
高度可定制:matplotlib提供了丰富的配置选项,用户可以自定义图形的样式、颜色、标签、标题、轴标签等。通过配置选项,可以灵活地调整图形的外观和布局,以满足个性化的需求。
支持多种输出格式:matplotlib可以将图形输出为多种格式,包括图片文件(如PNG、JPEG)、PDF、SVG等。用户可以根据需要选择合适的输出格式,方便地将图形用于报告、文档或网页中。
丰富的扩展库:matplotlib生态系统非常丰富,有许多扩展库可以与之配合使用,如Seaborn、Pandas等。这些扩展库提供了更高级的绘图功能和更方便的数据处理工具,进一步提升了matplotlib的使用体验和效果。
总之,matplotlib是一个功能强大且灵活的Python绘图库,适用于各种数据可视化需求。无论是初学者还是专业人士,都可以通过matplotlib轻松地创建出精美的图形,并更好地理解和分析数据。
折线图(Line Plot):用于显示连续数据的趋势和变化。
散点图(Scatter Plot):用于显示两个变量之间的关系和分布。
柱状图(Bar Plot):用于比较不同类别或组之间的数值。
条形图(Barh Plot):用于水平展示柱状图。
饼图(Pie Chart):用于显示数据的相对比例和占比。
直方图(Histogram):用于显示数据的分布情况。
箱线图(Box Plot):用于显示数据的分散情况和异常值。
热力图(Heatmap):用于显示数据的矩阵关系。
3D图形(3D Plots):包括3D散点图、3D曲面图等。
等高线图(Contour Plot):用于显示二维数据的等高线。
极坐标图(Polar Plot):用于显示数据在极坐标系下的分布。
简单地理图(Simple Maps):用于显示地理数据的简单地图。
除了上述常见的图形类型,matplotlib库还提供了许多其他类型的图形,同时也支持自定义图形的样式、颜色、标签等。通过使用matplotlib库,可以根据具体的需求和数据类型选择合适的图形类型,并灵活地进行定制和配置,以实现所需的数据可视化效果。
matplotlib库提供了丰富的属性设置,用于自定义图形的样式和外观。以下是常用的属性设置: 颜色设置: color:设置图形的颜色,可以使用预定义的颜色名称(如'red'、'blue'等),也可以使用RGB值或十六进制颜色码。 edgecolor:设置图形边缘的颜色。 facecolor:设置图形内部的填充颜色。 线型设置: linestyle:设置线条的样式,如实线、虚线等。 linewidth:设置线条的宽度。 标记设置: marker:设置标记的样式,如圆圈、方形等。 markersize:设置标记的大小。 文本设置: fontsize:设置文本的字体大小。 fontweight:设置文本的字体粗细。 fontfamily:设置文本的字体族。 图例设置: legend:设置图例的位置和样式。 label:设置图例的标签。 坐标轴设置: xlabel:设置x轴的标签。 ylabel:设置y轴的标签。 xticks:设置x轴刻度的位置和标签。 yticks:设置y轴刻度的位置和标签。 图形大小和边距设置: figsize:设置图形的大小。 dpi:设置图形的分辨率。 tight_layout:自动调整子图的布局,使其适应图形大小。 以上只是一些常用的属性设置,matplotlib还提供了更多的属性和方法,用于进一步自定义图形的样式和外观。可以通过查阅matplotlib的官方文档来获取更详细的信息。
(1)颜色设置:
在matplotlib中,可以使用RGB值或十六进制颜色码来设置图形的颜色。以下是一些常用的颜色的RGB值和十六进制颜色码: 预定义颜色名称: 'red':红色 'blue':蓝色 'green':绿色 'yellow':黄色 'orange':橙色 'purple':紫色 'brown':棕色 'gray':灰色 'black':黑色 'white':白色 RGB值: (1, 0, 0):红色 (0, 0, 1):蓝色 (0, 1, 0):绿色 (1, 1, 0):黄色 (1, 0.5, 0):橙色 (0.5, 0, 0.5):紫色 (0.6, 0.4, 0.2):棕色 (0.5, 0.5, 0.5):灰色 (0, 0, 0):黑色 (1, 1, 1):白色 十六进制颜色码: '#FF0000':红色 '#0000FF':蓝色 '#00FF00':绿色 '#FFFF00':黄色 '#FFA500':橙色 '#800080':紫色 '#996633':棕色 '#808080':灰色 '#000000':黑色 '#FFFFFF':白色 可以根据需要选择合适的颜色来设置图形的外观。
(2)线型设置:
linestyle属性用于设置线条的样式,可以通过以下属性值来设置线条的样式: 实线样式: '-':实线 'solid':实线 虚线样式: '--':破折线 'dashed':破折线 点线样式: ':':点线 'dotted':点线 点划线样式: '-.':点划线 'dashdot':点划线 除了上述属性值外,还可以使用自定义的线型设置,例如使用一个由线段长度和间隔长度组成的元组来表示虚线的样式,如(10, 5)表示线段长度为10,间隔长度为5的虚线。 示例代码: import matplotlib.pyplot as plt x = [1, 2, 3, 4, 5] y = [1, 4, 9, 16, 25] plt.plot(x, y, linestyle='-', color='blue') # 使用实线样式 plt.plot(x, y, linestyle='--', color='red') # 使用虚线样式 plt.plot(x, y, linestyle=':', color='green') # 使用点线样式 plt.plot(x, y, linestyle='-.', color='purple') # 使用点划线样式 plt.plot(x, y, linestyle=(10, 5), color='orange') # 使用自定义虚线样式 plt.show()
(3)标记设置:
marker属性用于设置数据点的标记样式,可以通过以下属性值来设置标记的样式: 点样式: '.':小圆点 'o':实心圆点 'v':下三角形 '^':上三角形 '<':左三角形 '>':右三角形 '1':下指针 '2':上指针 '3':左指针 '4':右指针 's':正方形 'p':五边形 '*':星形 'h':六边形1 'H':六边形2 '+':加号 'x':叉号 'D':菱形 'd':瘦菱形 '|':垂直线 '_':水平线 自定义标记样式: 使用元组 (marker, size) 来自定义标记样式,其中 marker 表示标记的形状,size 表示标记的大小。 示例代码: import matplotlib.pyplot as plt x = [1, 2, 3, 4, 5] y = [1, 4, 9, 16, 25] plt.plot(x, y, marker='.', linestyle='-', color='blue') # 使用小圆点作为标记 plt.plot(x, y, marker='o', linestyle='-', color='red') # 使用实心圆点作为标记 plt.plot(x, y, marker='v', linestyle='-', color='green') # 使用下三角形作为标记 plt.plot(x, y, marker='^', linestyle='-', color='purple') # 使用上三角形作为标记 plt.plot(x, y, marker='s', linestyle='-', color='orange') # 使用正方形作为标记 plt.plot(x, y, marker=('D', 8), linestyle='-', color='black') # 使用自定义标记样式 plt.show() 运行上述代码将会绘制出不同样式的标记点。
(4)文本设置:
文本设置属性用于设置文本的样式和属性,可以通过以下属性来设置文本的样式: fontfamily:设置文本的字体族(如 'serif'、'sans-serif'、'cursive'、'fantasy'、'monospace'等)。 fontsize:设置文本的字体大小(如 'large'、'x-large'、'smaller'、'larger'等)。 fontweight:设置文本的字体粗细(如 'normal'、'bold'、'light'、'heavy'等)。 fontstyle:设置文本的字体风格(如 'normal'、'italic'、'oblique'等)。 color:设置文本的颜色(如 'red'、'blue'、'green'等)。 backgroundcolor:设置文本的背景颜色(如 'yellow'、'lightblue'、'pink'等)。 horizontalalignment:设置文本的水平对齐方式(如 'left'、'center'、'right'等)。 verticalalignment:设置文本的垂直对齐方式(如 'top'、'center'、'bottom'等)。 rotation:设置文本的旋转角度。 bbox:设置文本的边框样式和属性(如边框颜色、边框粗细等)。 示例代码: import matplotlib.pyplot as plt x = [1, 2, 3, 4, 5] y = [1, 4, 9, 16, 25] plt.plot(x, y) plt.text(2, 10, 'Sample Text', fontfamily='serif', fontsize='x-large', fontweight='bold', fontstyle='italic', color='red', backgroundcolor='yellow', horizontalalignment='center', verticalalignment='center', rotation=45, bbox=dict(facecolor='lightblue', edgecolor='blue', linewidth=2)) plt.show() 运行上述代码将会绘制出一条曲线和一个带有样式设置的文本。
(5)图例设置:
图例设置属性用于设置图例的样式和属性,可以通过以下属性来设置图例的样式: loc:设置图例的位置(如 'upper right'、'lower left'、'center'等)。 bbox_to_anchor:设置图例的位置,以坐标轴为参考点进行设置。 title:设置图例的标题。 fontsize:设置图例的字体大小。 frameon:设置图例是否显示边框。 framealpha:设置图例边框的透明度。 ncol:设置图例的列数。 markerscale:设置图例标记的缩放比例。 title_fontsize:设置图例标题的字体大小。 shadow:设置图例是否显示阴影。 示例代码: import matplotlib.pyplot as plt x = [1, 2, 3, 4, 5] y1 = [1, 4, 9, 16, 25] y2 = [1, 2, 3, 4, 5] plt.plot(x, y1, label='Line 1') plt.plot(x, y2, label='Line 2') plt.legend(loc='upper right', title='Legend', fontsize='large', frameon=True, framealpha=0.8, ncol=2, markerscale=1.5, title_fontsize='x-large', shadow=True) plt.show() 运行上述代码将会绘制出两条曲线和一个带有样式设置的图例。
(6)坐标轴设置:
坐标轴设置属性用于设置坐标轴的样式和属性,可以通过以下属性来设置坐标轴的样式: xlabel:设置 x 轴的标签。 ylabel:设置 y 轴的标签。 xlim:设置 x 轴的显示范围。 ylim:设置 y 轴的显示范围。 xticks:设置 x 轴的刻度值。 yticks:设置 y 轴的刻度值。 xscale:设置 x 轴的刻度缩放(如 'linear'、'log'、'symlog'等)。 yscale:设置 y 轴的刻度缩放(如 'linear'、'log'、'symlog'等)。 grid:设置是否显示坐标轴网格线。 gridcolor:设置坐标轴网格线的颜色。 gridlinestyle:设置坐标轴网格线的样式。 gridlinewidth:设置坐标轴网格线的宽度。 tick_params:设置刻度线的样式和属性(如刻度线的长度、宽度、颜色等)。 示例代码: import matplotlib.pyplot as plt x = [1, 2, 3, 4, 5] y = [1, 4, 9, 16, 25] plt.plot(x, y) plt.xlabel('X-axis', fontsize='large') plt.ylabel('Y-axis', fontsize='large') plt.xlim(0, 6) plt.ylim(0, 30) plt.xticks([1, 2, 3, 4, 5], ['A', 'B', 'C', 'D', 'E'], rotation=45) plt.yticks([0, 10, 20, 30], ['0', '10', '20', '30']) plt.xscale('linear') plt.yscale('linear') plt.grid(True, color='gray', linestyle='--', linewidth=0.5) plt.tick_params(axis='both', which='both', length=5, width=1, color='black') plt.show() 运行上述代码将会绘制出一条曲线,并设置了坐标轴的样式和属性。
简介:
折线图(Line plot)是一种用于展示数据随着时间、顺序或其他连续变量的变化趋势的图表。它通过连接数据点的线段来显示数据的变化情况,可以帮助我们观察和分析数据的趋势、周期性和关联性。
折线图的主要特点和作用如下:
变化趋势观察:折线图可以显示数据随时间或其他连续变量的变化趋势,帮助我们观察和分析数据的增长、下降、波动等情况。
周期性分析:对于具有周期性的数据,折线图可以清晰地展示数据的周期性变化,如季节性变化、周期性波动等。
关联性分析:当有多组相关数据时,可以通过绘制多条折线来比较它们之间的关联性和趋势,从而观察它们的相似性或差异性。
异常值检测:折线图可以帮助我们发现数据中的异常值,即与其他数据点相比较为异常的数值。
数据预测和预测模型评估:通过观察折线图的趋势,我们可以对未来的数据进行预测,并评估预测模型的准确性和可靠性。
数据可视化:折线图是一种直观、简洁的方式来展示数据的变化趋势,可以用于报告、演示和与他人分享数据。
折线图通常在时间序列分析、趋势分析、市场分析、科学实验等领域广泛应用。通过观察和分析折线图,我们可以更好地理解数据的变化情况,进而做出更准确的决策和预测。
(1)简单折线图(基本每行代码都有注解,大家可以参考,实现方式多种多样)
import matplotlib.pyplot as plt import numpy as np # x,y轴的数据生成 x = np.linspace(0, 10, 100) y = np.sin(x) # 创建图形和坐标轴(plt.figure(figsize=(12, 4)),设置了图形的大小为宽度为12英寸,高度为4英寸) fig, ax = plt.subplots(figsize=(12, 4)) # 绘制曲线,设置y轴标签和曲线颜色 ax.plot(x, y, label='sin(x)',color='red') # 添加标题和标签 ax.set_title('Sine Wave') ax.set_xlabel('x') ax.set_ylabel('sin(x)') # 添加图例 ax.legend() # 保存图形 plt.savefig('line_plot.png') # 显示图形 plt.show()
结果如下所示:
(2)多条折线图
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"]=["SimHei"] #设置字体
plt.rcParams["axes.unicode_minus"]=False #该语句解决图像中的“-”负号的乱码问题
fig, ax = plt.subplots(figsize=(12, 4),dpi=80)
x = ['第一季度','第二季度','第三季度','第四季度']
y1 = [288,197,456,210]
y2 = [110,256,376,121]
y3 = [260,356,277,300]
plt.plot(x, y1, label = 'Line1',marker='o')
plt.plot(x, y2, label = 'Line2', marker='*')
plt.plot(x, y3, label = 'Line3',marker='^')
plt.show()
结果如下:
(3)循环实现多条折线图
import matplotlib.pyplot as plt
# 定义数据
x = [1, 2, 3, 4, 5]
y_list = [[1, 4, 9, 16, 25], [1, 2, 3, 4, 5], [5, 4, 3, 2, 1]]
y_marker = ['*','o','^']
# 创建画布
plt.figure(figsize=(8, 4), dpi=100)
# 循环绘制每一条折线图
for i in range(len(y_list)):
plt.plot(x, y_list[i],marker=y_marker[i])
# 显示图形
plt.show()
结果如下:
(4)实现不连续的折线图
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
plt.plot(x, y, linestyle='--')
plt.show()
结果如下:
(5)区域填充的折线图
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
plt.plot(x, y)
plt.fill_between(x, y, color='gray', alpha=0.5)
plt.show()
结果如下:
#绘制折线图 import matplotlib.pyplot as plt plt.rcParams["font.sans-serif"]=["SimHei"] #设置字体 plt.rcParams["axes.unicode_minus"]=False #正常显示负号 year = [2017, 2018, 2019, 2020] people = [20, 40, 60, 70] #生成图表 plt.plot(year, people) plt.xlabel('年份') plt.ylabel('人口') plt.title('人口增长') #设置纵坐标刻度 plt.yticks([0, 20, 40, 60, 80]) #设置填充选项:参数分别对应横坐标,纵坐标,纵坐标填充起始值,填充颜色 plt.fill_between(year, people, 20, color = 'green') #显示图表 plt.show()
结果如下:
到这里折线图的介绍基本结束,大家可以根据不同属性进行不同折线图的实现。
简介:
柱状图(Bar chart)是一种用于展示不同类别或组之间数量或频率比较的图表。它通过绘制垂直或水平的矩形柱来表示数据,柱的高度表示数据的大小,可以帮助我们直观地比较不同类别或组之间的差异。
柱状图的主要特点和作用如下:
数据比较:柱状图可以清晰地显示不同类别或组之间的数量或频率差异,帮助我们比较和分析数据的大小、趋势和关系。
类别分布观察:通过柱状图,我们可以观察和分析不同类别或组的数据分布情况,了解每个类别或组的相对大小和比例。
异常值检测:柱状图可以帮助我们发现数据中的异常值,即与其他类别或组相比较为异常的数值。
排序和排序比较:通过对柱状图进行排序,我们可以更好地理解数据的排序情况,并比较不同类别或组之间的排序差异。
数据可视化:柱状图是一种直观、简洁的方式来展示数据的比较和分布情况,可以用于报告、演示和与他人分享数据。
柱状图常用于市场调研、销售分析、统计报告、民意调查等领域。通过观察和分析柱状图,我们可以更好地理解数据的差异和趋势,有助于做出更准确的决策和预测。
(1)简单柱状图
import matplotlib.pyplot as plt
x = ['A', 'B', 'C', 'D']
y = [10, 15, 7, 12]
plt.bar(x, y)
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.title('基本柱状图')
plt.show()
import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False # 0.准备数据 # 电影名字 movie_name = ['雷神3:诸神黄昏','正义联盟','东方快车谋杀案','寻梦环游记','全球风暴','降魔传','追捕','七十七天','密战','狂兽','其它'] # 横坐标 x = range(len(movie_name)) # 票房数据 y = [73853,57767,22354,15969,14839,8725,8716,8318,7916,6764,52222] # 1.创建画布 plt.figure(figsize=(20, 8), dpi=100) # 2.绘制柱状图 plt.bar(x, y, width=0.5, color=['b','r','g','y','c','m','y','k','c','g','b']) # 2.1b修改x轴的刻度显示 plt.xticks(x, movie_name) # 2.2 添加网格显示 plt.grid(linestyle="--", alpha=0.5) # 2.3 添加标题 plt.title("电影票房收入对比") # 3.显示图像 plt.show()
(2)多个柱状图
import numpy as np
import matplotlib.pyplot as plt
x = ['A', 'B', 'C', 'D']
y1 = [10, 15, 7, 12]
y2 = [8, 11, 9, 14]
width = 0.35
x_indexes = np.arange(len(x))
plt.bar(x_indexes - width/2, y1, width=width, label='柱状图1')
plt.bar(x_indexes + width/2, y2, width=width, label='柱状图2')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.title('多个柱状图')
plt.xticks(x_indexes, x)
plt.legend()
plt.show()
(3)堆叠柱状图:
import numpy as np
import matplotlib.pyplot as plt
x = ['A', 'B', 'C', 'D']
y1 = [10, 15, 7, 12]
y2 = [8, 11, 9, 14]
x_indexes = np.arange(len(x))
plt.bar(x_indexes, y1, label='柱状图1')
plt.bar(x_indexes, y2, bottom=y1, label='柱状图2')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.title('堆叠柱状图')
plt.xticks(x_indexes, x)
plt.legend()
plt.show()
(4)水平柱状图:
import matplotlib.pyplot as plt
y = ['A', 'B', 'C', 'D']
x = [10, 15, 7, 12]
plt.barh(y, x)
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.title('水平柱状图')
plt.show()
(5)带误差线的柱状图:
import matplotlib.pyplot as plt import numpy as np # 柱形图误差线 # 1. 生成数据 np.random.seed(20230811) x = np.arange(10) y = np.random.randint(20, 100, 10) yerr = np.random.randint(3, 10, 10) # 2. 创建画布 fig = plt.figure(figsize=(6, 4), dpi=100) ax = fig.add_subplot(111) # 3. 绘制柱形图 ax.bar(x, y, width=0.5, color='C0', yerr=yerr, capsize=5) # 4. 设置样式 ax.grid(axis='y', linestyle='--') ax.set_axisbelow(True) ax.spines[['right', 'top']].set_color('C7') plt.show()
简介:
饼图(Pie chart)是一种用于展示不同类别或组之间数量或比例关系的图表。它通过绘制一个圆形,将圆形划分为不同扇形区域,每个扇形区域的角度大小表示该类别或组的比例或百分比。
饼图的主要特点和作用如下:
比例展示:饼图可以直观地展示不同类别或组之间的比例关系,通过扇形区域的大小来表示每个类别或组的占比。
百分比分布观察:通过饼图,我们可以观察和分析不同类别或组的百分比分布情况,了解每个类别或组的相对大小和比例。
类别占比比较:饼图可以帮助我们比较不同类别或组之间的占比差异,从而更好地理解数据的分布情况。
强调重点:通过调整饼图中某个扇形区域的大小,可以突出某个类别或组的重要性或特殊性。
数据可视化:饼图是一种直观、简洁的方式来展示数据的比例和分布情况,可以用于报告、演示和与他人分享数据。
饼图常用于市场份额分析、调查结果展示、资源分配比例等领域。通过观察和分析饼图,我们可以更好地理解数据的比例关系,有助于做出更准确的决策和预测。需要注意的是,饼图适用于展示相对比例或百分比的数据,不适合展示大量类别或组之间的细节差异。
(1)基础实心饼状图
import matplotlib.pyplot as plt
plt.figure(figsize=(6,3), dpi=100)
labels = ['A', 'B', 'C', 'D']
sizes = [15, 30, 45, 10]
plt.pie(sizes, labels=labels, shadow=True)
plt.axis('equal')
plt.legend()
plt.show()
(2)加强版实心饼状图
import matplotlib.pyplot as plt # 设置字体以便支持中文 plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False # 设置图片大小和分辨率 plt.figure(figsize=(6,3), dpi=100) labels = ['A', 'B', 'C', 'D'] sizes = [15, 30, 45, 10] #突出显示某一块 explode = (0, 0.1, 0, 0) #设置颜色 colors = ['red', 'green', 'blue', 'yellow'] # autopct='%1.1f%%', shadow=True:显示占比和图形阴影 plt.pie(sizes, labels=labels,explode=explode , colors=colors,autopct='%1.1f%%', shadow=True) #axis 是一个用于控制图形坐标轴显示和范围的重要属性: plt.axis('equal') plt.title('占比图') plt.legend() plt.show()
(3)加强版环状饼状图
import matplotlib as mpl import matplotlib.pyplot as plt # 配置字体,显示中文 mpl.rcParams['font.sans-serif'] = ['SimHei'] # 配置坐标轴刻度值模式,显示负号 mpl.rcParams['axes.unicode_minus'] = False # 定义数据 elements = ['面粉', '砂糖', '牛奶', '草莓酱', '坚果'] weight1 = [40, 15, 20, 10, 15] cs = ['red', 'orange', 'yellow', 'green', 'cyan'] # 对数据进行排序 x = list(zip(elements, weight1, cs)) x.sort(key=lambda e: e[1], reverse=True) [elements, weight1, cs] = list(zip(*x)) outer_cs = cs inner_cs = cs # 初始化图表区 fig = plt.figure(figsize=(12, 8),facecolor='cornsilk') # 绘制外层圆环 wedges1, texts1, autotexts1 = plt.pie(x=weight1, autopct='%3.1f%%', radius=1, pctdistance=0.85, startangle=90, counterclock=False, colors=outer_cs, # 锲形块边界属性字典 wedgeprops={'edgecolor': 'white', 'linewidth': 1, 'linestyle': '-' }, # 锲形块标签文本和数据标注文本的字体属性 textprops=dict(color='k', # 字体颜色 fontsize=14, family='Arial' ) ) # 绘制中心空白区域 plt.pie(x=[1], radius=0.6, colors=[fig.get_facecolor()] ) # 设置图例 plt.legend(handles=wedges1, loc='best', labels=elements, title='配料表', facecolor = fig.get_facecolor(), # 图例框的填充颜色 edgecolor='darkgray', fontsize=12 ) plt.title(label='果酱面包的配料表占比', color='blue', size=15, weight='bold' );
(4)加强版环中环状饼状图
# 配置字体,显示中文 mpl.rcParams['font.sans-serif'] = ['SimHei'] # 配置坐标轴刻度值模式,显示负号 mpl.rcParams['axes.unicode_minus'] = False # 定义数据 elements = ['面粉', '砂糖', '牛奶', '草莓酱', '坚果'] weight1 = [40, 15, 20, 10, 15] weight2 = [30, 25, 15, 20, 10] cs = ['red', 'orange', 'yellow', 'green', 'cyan'] # 对数据进行排序 x = list(zip(elements, weight1, weight2, cs)) x.sort(key=lambda e: e[1], reverse=True) [elements, weight1, weight2, cs] = list(zip(*x)) # 初始化图表区 fig = plt.figure(figsize=(12, 8), facecolor='cornsilk' ) # 绘制外层圆环 wedges1, texts1, autotexts1 = plt.pie(x=weight1, autopct='%3.1f%%', radius=1, pctdistance=0.85, startangle=90, counterclock=False, colors=cs, # 锲形块边界属性字典 wedgeprops={'edgecolor': 'white', 'linewidth': 1, 'linestyle': '-' }, # 锲形块标签文本和数据标注文本的字体属性 textprops=dict(color='k', # 字体颜色 fontsize=14, family='Arial' )) # 绘制内层圆环 wedges2, texts2, autotexts2 = plt.pie(x=weight2, autopct='%3.1f%%', radius=0.7, pctdistance=0.75, startangle=90, counterclock=False, colors=inner_cs, # 锲形块边界属性字典 wedgeprops={'edgecolor': 'white', 'linewidth': 1, 'linestyle': '-' }, # 锲形块标签文本和数据标注文本的字体属性 textprops=dict(color='k', # 字体颜色 fontsize=14, family='Arial' )) # 绘制中心空白区域 plt.pie(x=[1], radius=0.4, colors=[fig.get_facecolor()] ) # 设置图例 plt.legend(handles=wedges1, loc='best', labels=elements, title='配料表', facecolor = fig.get_facecolor(), # 图例框的填充颜色 edgecolor='darkgray', fontsize=12 ) plt.title(label='不同果酱面包的配料表比较', color='blue', size=15, weight='bold' );
(5)综合饼状图
from matplotlib import font_manager as fm from matplotlib import cm import pandas as pd shapes = ['Cross', 'Cone', 'Egg', 'Teardrop', 'Chevron', 'Diamond', 'Cylinder', 'Rectangle', 'Flash', 'Cigar', 'Changing', 'Formation', 'Oval', 'Disk', 'Sphere', 'Fireball', 'Triangle', 'Circle', 'Light'] values = [ 287, 383, 842, 866, 1187, 1405, 1495, 1620, 1717, 2313, 2378, 3070, 4332, 5841, 6482, 7785, 9358, 9818, 20254] s = pd.Series(values, index=shapes) labels = s.index sizes = s.values explode = (0.1,0,0,0,0,0,0,0,0,0,0,0,0,0.2,0,0,0,0.1,0) # "explode" , show the selected slice fig, axes = plt.subplots(figsize=(8,5),ncols=2,dpi=100) # 设置绘图区域大小 ax1, ax2 = axes.ravel() colors = cm.rainbow(np.arange(len(sizes))/len(sizes)) # colormaps: Paired, autumn, rainbow, gray,spring,Darks patches, texts, autotexts = ax1.pie(sizes, labels=labels, autopct='%1.0f%%',explode=explode, shadow=False, startangle=170, colors=colors, labeldistance=1.2,pctdistance=1.03, radius=0.4) # labeldistance: 控制labels显示的位置 # pctdistance: 控制百分比显示的位置 # radius: 控制切片突出的距离 ax1.axis('equal') # 重新设置字体大小 proptease = fm.FontProperties() proptease.set_size('xx-small') # font size include: ‘xx-small’,x-small’,'small’,'medium’,‘large’,‘x-large’,‘xx-large’ or number, e.g. '12' plt.setp(autotexts, fontproperties=proptease) plt.setp(texts, fontproperties=proptease) ax1.set_title('Shapes', loc='center') # ax2 只显示图例(legend) ax2.axis('off') ax2.legend(patches, labels, loc='center left') plt.tight_layout() # plt.savefig("pie_shape_ufo.png", bbox_inches='tight') plt.savefig('Demo_project_final.jpg') plt.show()
简介:https://www.yingsoo.com/news/devops/44361.html
箱型图(Boxplot)是一种用于可视化数据分布和离群值的统计图表。它展示了数据的中位数、四分位数、上下边界和离群值,可以帮助我们了解数据的集中趋势、离散程度和异常值情况。
箱型图的主要组成部分如下:
箱体(Box):由数据的四分位数(上四分位数和下四分位数)组成,箱体的长度表示数据的离散程度。
中位数线(Median):表示数据的中位数,即将数据从小到大排列后的中间值。
上边界(Upper Whisker)和下边界(Lower Whisker):表示数据的上四分位数和下四分位数之外的边界值。
离群值(Outliers):超过上边界和下边界的数据点,被认为是异常值。
箱型图的作用包括:
数据分布观察:箱型图可以帮助我们了解数据的分布情况,包括数据的中位数、四分位数、离散程度等。
离群值检测:箱型图可以帮助我们识别数据中的离群值,即与其他数据点相比较为异常的数值。
数据比较:通过绘制不同组数据的箱型图,可以直观地比较它们的中位数、四分位数和离散程度,从而了解它们之间的差异。
数据可视化:箱型图是一种简洁而有效的方式来展示数据的统计特征,可以用于报告和演示。
通过观察箱型图,我们可以获得关于数据集的重要信息,从而更好地理解和分析数据。
(1)简单箱型图
import matplotlib.pyplot as plt
import numpy as np
data1 = np.random.randn(100)
data2 = np.random.randn(100)
data3 = np.random.randn(100)
data = [data1, data2, data3]
labels = ['Group 1', 'Group 2', 'Group 3']
colors = [1, 0, 0.5]
plt.boxplot(data, labels=labels, vert=True, patch_artist=True, boxprops=dict(facecolor=colors))
plt.show()
(2)小提琴版箱型图
import matplotlib.pyplot as plt import numpy as np import matplotlib """ font:设置中文 unicode_minus:显示负号 """ matplotlib.rcParams['font.family'] = ['Heiti TC'] matplotlib.rcParams['axes.unicode_minus']=False # 正常显示负号 """ 设置随机数生成器的种子,使每次生成的随机数相同方便后续的复现 """ np.random.seed(19900108) """ 生成随机数data numpy.random.normal()函数来创建一组基于正态分布的随机数据,该函数有三个参数,分别是正态分布的平均值、标准差以及期望值的数量 """ data = np.random.normal(70, 40, 1000) fig,axes=plt.subplots(1,2,figsize=(16,9)) #绘制箱型图 axes[0].boxplot(data) axes[0].set_title("箱型图") #绘制小提琴图 axes[1].violinplot(data,showmeans=True, showmedians=True) axes[1].set_title("小提琴图") plt.show()
(3)不同形状箱型图
import matplotlib.pyplot as plt
import numpy as np
# 生成随机数据
np.random.seed(0)
data = np.random.randn(100)
# 绘制带有缺口的箱线图
plt.boxplot(data, notch=True)
# 添加标签和标题
plt.xlabel('Data')
plt.ylabel('Values')
plt.title('Box Plot with Notch')
# 显示图表
plt.show()
import matplotlib.pyplot as plt import numpy as np # 生成随机数据 np.random.seed(0) data = np.random.randn(100) outliers = [2.5, -3.8, 3.2] # 自定义异常值 # 绘制箱线图并自定义异常值样式 plt.boxplot(data, flierprops={'marker': 'x', 'markerfacecolor': 'red', 'markersize': 8, 'linestyle': 'none'}, notch=True, showfliers=True) # 添加自定义异常值 plt.scatter(np.full(len(outliers), 1), outliers, marker='x', color='red') # 添加标签和标题 plt.xlabel('Data') plt.ylabel('Values') plt.title('Box Plot with Custom Outliers') # 显示图表 plt.show()
import matplotlib.pyplot as plt
import numpy as np
# 生成随机数据
np.random.seed(0)
data = np.random.randn(100)
# 绘制箱线图并自定义箱子样式
plt.boxplot(data, boxprops={'color': 'green', 'linewidth': 2, 'linestyle': '--'},
notch=True, showfliers=True)
# 添加标签和标题
plt.xlabel('Data')
plt.ylabel('Values')
plt.title('Box Plot with Custom Box Style')
# 显示图表
plt.show()
简介:
热力图(Heatmap)是一种二维图表,通过使用颜色编码来表示数据的矩阵或表格中的值。热力图通常使用渐变色来展示数据的相对大小,较小的值使用较浅的颜色,较大的值使用较深的颜色。热力图可以直观地显示数据的分布和模式,帮助我们发现数据中的关联性和规律。
热力图的作用主要有以下几个方面:
可视化数据分布:热力图可以将数据的分布以直观的方式展示出来。通过观察颜色的变化,我们可以快速了解数据的整体分布情况,包括数据的集中程度、离散程度和梯度变化。
发现关联性和规律:热力图可以帮助我们发现数据中的关联性和规律。通过对比不同数据点之间的颜色差异,我们可以判断数据之间的相关性和趋势。例如,在生物学研究中,热力图可以用于显示基因表达水平的相关性。
强调重要信息:热力图可以突出显示数据中的重要信息。通过调整颜色映射和颜色条的设置,我们可以将感兴趣的数据区域或特定数值范围的数据突出显示,从而更加准确地传达数据的含义。
可视化矩阵数据:热力图特别适用于可视化矩阵或表格数据。通过将矩阵数据映射到热力图的颜色空间,我们可以更好地理解数据的结构和模式。
总之,热力图是一种直观、有效的数据可视化工具,可以帮助我们理解数据的分布、发现关联性和规律,并突出显示重要信息。它在各个领域的数据分析、探索和展示中都有广泛的应用。
(1)简单热力图
import matplotlib.pyplot as plt import numpy as np plt.figure(figsize=(10,6), dpi=100) vegetables = ["cucumber", "tomato", "lettuce", "asparagus", "potato", "wheat", "barley"] farmers = ["Farmer Joe", "Upland Bros.", "Smith Gardening", "Agrifun", "Organiculture", "BioGoods Ltd.", "Cornylee Corp."] harvest = np.array([[0.8, 2.4, 2.5, 3.9, 0.0, 4.0, 0.0], [2.4, 0.0, 4.0, 1.0, 2.7, 0.0, 0.0], [1.1, 2.4, 0.8, 4.3, 1.9, 4.4, 0.0], [0.6, 0.0, 0.3, 0.0, 3.1, 0.0, 0.0], [0.7, 1.7, 0.6, 2.6, 2.2, 6.2, 0.0], [1.3, 1.2, 0.0, 0.0, 0.0, 3.2, 5.1], [0.1, 2.0, 0.0, 1.4, 0.0, 1.9, 6.3]]) plt.xticks(np.arange(len(farmers)), labels=farmers, rotation=45, rotation_mode="anchor", ha="right") plt.yticks(np.arange(len(vegetables)), labels=vegetables) plt.title("Harvest of local farmers (in tons/year)") for i in range(len(vegetables)): for j in range(len(farmers)): text = plt.text(j, i, harvest[i, j], ha="center", va="center", color="w") plt.imshow(harvest) plt.colorbar() plt.tight_layout() plt.show()
(2)热力图
from matplotlib import pyplot as plt import numpy as np def draw(): # 定义热图的横纵坐标 xLabel = ['0.1', '0.3', '0.5', '0.7', '0.9', '1'] yLabel = ['0.001', '0.01', '0.1', '1'] # 准备数据阶段 data = np.array([[0.9095, 0.9187, 0.9205, 0.9264, 0.9261, 0.9127], [0.9130, 0.9106, 0.9240, 0.9322, 0.9285, 0.9138], [0.8857, 0.8851, 0.8880, 0.8936, 0.8867, 0.9147], [0.9181, 0.9217, 0.9308, 0.9355, 0.9377, 0.9104]]) # 作图阶段 fig, ax = plt.subplots(figsize=(10,6), dpi=100) # 定义横纵坐标的刻度 ax.set_yticks(range(len(yLabel))) ax.set_yticklabels(yLabel) ax.set_xticks(range(len(xLabel))) ax.set_xticklabels(xLabel) # 作图并选择热图的颜色填充风格,这里选择yLGn im = ax.imshow(data, cmap="YlGn") # 增加右侧的颜色刻度条 plt.colorbar(im) # 填充数字 for i in range(len(yLabel)): for j in range(len(xLabel)): #print('data[{},{}]:{}'.format(i, j, data[i, j])) ax.text(j, i, data[i, j], ha="center", va="center", color="black") # 增加标题 plt.title("AUC values", fontdict={'size': 16}) plt.xlabel(r'$\beta$', fontdict={'size': 16}) plt.ylabel(r'$\gamma$', rotation=0, fontdict={'size': 16}) # show fig.tight_layout() plt.show() d = draw()
简介:
直方图(Histogram)是一种用于展示数据分布的统计图表。它将数据划分为若干个等宽的区间(也称为“箱子”或“柱子”),并统计每个区间内数据的频数或频率。直方图通过绘制矩形条来表示每个区间内数据的数量或频率,矩形条的高度表示数据的频数或频率。
直方图的作用主要有以下几个方面:
描述数据分布:直方图可以直观地展示数据的分布情况。通过观察直方图的形状、峰度和偏态,我们可以了解数据的中心趋势、离散程度和数据的偏向性。
检测数据异常和离群值:直方图可以帮助我们检测数据中的异常值和离群值。异常值是指与其他观测值明显不同的极端数值。在直方图中,异常值通常表现为与其他柱子明显不同高度的柱子。
比较不同组的数据:通过将多个直方图放在一起,我们可以直观地比较不同组的数据分布情况。这对于探索不同类别或组之间的差异非常有用。
确定数据分布的特征:直方图可以帮助我们确定数据的分布特征,例如是否符合正态分布、是否存在多峰分布等。这对于选择适当的统计方法和模型具有重要意义。
数据预处理:直方图可以帮助我们进行数据预处理,例如确定数据的分箱方式、选择合适的数据转换方法等。
总之,直方图是一种简单而常用的数据可视化工具,可以帮助我们了解数据的分布特征、检测异常值和离群值,并进行数据比较和预处理。它在数据分析、探索和展示中被广泛应用。
(1)基础直方图
import matplotlib.pyplot as plt
import numpy as np
# 准备数据
data = np.random.randn(1000)
# 绘制直方图
plt.hist(data)
# 添加标签和标题
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Histogram')
# 显示图表
plt.show()
(2)一图多形
import matplotlib.pyplot as plt import numpy as np # 生成随机数据 np.random.seed(0) data1 = np.random.normal(0, 1, 1000) data2 = np.random.normal(2, 1, 800) data3 = np.random.normal(-2, 1, 1200) # 绘制直方图 plt.hist(data1, bins=30, alpha=0.5, label='Data 1') plt.hist(data2, bins=30, alpha=0.5, label='Data 2') plt.hist(data3, bins=30, alpha=0.5, label='Data 3') # 添加标签和标题 plt.xlabel('Value') plt.ylabel('Frequency') plt.title('Histogram Comparison') # 添加图例 plt.legend() # 显示图表 plt.show()
(3)升级1
import matplotlib.pyplot as plt
import numpy as np
# 生成随机数据
np.random.seed(0)
data = np.random.randn(1000)
# 绘制直方图
plt.hist(data, bins=30, color='skyblue', edgecolor='black')
# 添加标签和标题
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Histogram')
# 显示图表
plt.show()
(4)升级2
import numpy as np import matplotlib.pyplot as plt n_bins = 10 x = np.random.randn(1000, 3) fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(11,8)) #subplots创建多个子图 ax0=axes[0,0] ax1=axes[0,1] ax2=axes[1,0] ax3=axes[1,1] colors = ['red', 'tan', 'lime'] ax0.hist(x, n_bins, density=True, histtype='bar', color=colors, label=colors) ax0.legend(prop={'size': 8}) ax0.set_title('bars with legend') ax1.hist(x, n_bins, density=True, histtype='bar', stacked=True) ax1.set_title('stacked bar') ax2.hist(x, n_bins, histtype='step', stacked=True) ax2.set_title('stack step (unfilled)') x_multi = [np.random.randn(n) for n in [10000, 5000, 2000]] ax3.hist(x_multi, n_bins, histtype='bar') ax3.set_title('different sample sizes') fig.tight_layout() #自动调整子图参数 plt.show()
简介:
3D线框图(3D Wireframe Plot)是一种用于可视化三维数据的图表。它通过绘制三维空间中的线段来表示数据的分布和形状。3D线框图通常由一系列连接的线段组成,这些线段连接了数据点或数据的边界。
3D线框图的作用主要有以下几个方面:
展示数据的形状和结构:3D线框图可以直观地展示数据的形状和结构。通过观察线段的分布和连接方式,我们可以了解数据在三维空间中的分布和形态。
比较不同组的数据:通过将多个3D线框图放在一起,我们可以比较不同组数据的形状和结构。这对于探索不同类别或组之间的差异非常有用。
可视化复杂关系:3D线框图可以用于可视化复杂的关系和模式。通过绘制多个线段和连接点,我们可以展示数据中的复杂关系,例如多个变量之间的相互作用。
辅助数据分析和决策:3D线框图可以帮助我们进行数据分析和决策。通过观察线段的长度、角度和形状,我们可以得到关于数据的直观感受,并从中提取有用的信息。
艺术和设计应用:3D线框图在艺术和设计领域也有广泛的应用。它可以用于创造具有立体感和空间感的图像和模型,为艺术作品和设计方案增添视觉效果。
总之,3D线框图是一种用于可视化三维数据的图表,可以展示数据的形状和结构,比较不同组的数据,可视化复杂关系,并辅助数据分析和决策。它在数据分析、科学研究、艺术和设计等领域都有广泛的应用。
(1)3D线框图
import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import numpy as np # 生成数据 x = np.linspace(-5, 5, 50) # x轴坐标 y = np.linspace(-5, 5, 50) # y轴坐标 X, Y = np.meshgrid(x, y) Z = np.sin(np.sqrt(X**2 + Y**2)) # z轴坐标,这里使用sin函数生成一个曲面 # 创建一个三维坐标系 fig = plt.figure(figsize=(10,6), dpi=100) ax = fig.add_subplot(111, projection='3d') # 绘制线框图 ax.plot_wireframe(X, Y, Z) # 设置坐标轴标签 ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_zlabel('Z') # 显示图形 plt.show()
(2)3D散点图
import matplotlib.pyplot as plt import numpy as np # 数据准备 x = np.random.rand(100) # x轴数据 y = np.random.rand(100) # y轴数据 z = np.random.rand(100) # z轴数据 colors = np.random.rand(100) # 颜色数据 # 创建3D图形对象 fig = plt.figure(figsize=(10,6), dpi=100) ax = fig.add_subplot(111, projection='3d') # 绘制3D散点图 ax.scatter(x, y, z, c=colors, cmap='viridis', marker='o') # 设置坐标轴标签 ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_zlabel('Z') # 显示图形 plt.show()
(3)3D条形图
import matplotlib.pyplot as plt import numpy as np # 数据准备 x = np.arange(3) # x轴位置 y = np.arange(3) # y轴位置 x_mesh, y_mesh = np.meshgrid(x, y) # 创建网格 z = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 条形的高度 # 创建3D图形对象 fig = plt.figure(figsize=(10,6), dpi=100) ax = fig.add_subplot(111, projection='3d') # 绘制3D条形图 ax.bar3d(x_mesh.flatten(), y_mesh.flatten(), np.zeros_like(z).flatten(), 0.5, 0.5, z.flatten()) # 设置坐标轴标签 ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_zlabel('Z') # 显示图形 plt.show()
(4)3D曲面图
import matplotlib.pyplot as plt import numpy as np # 数据准备 x = np.linspace(-5, 5, 100) # x轴数据范围 y = np.linspace(-5, 5, 100) # y轴数据范围 x_mesh, y_mesh = np.meshgrid(x, y) # 创建网格 z = np.sin(np.sqrt(x_mesh**2 + y_mesh**2)) # 曲面高度 # 创建3D图形对象 fig = plt.figure(figsize=(10,6), dpi=100) ax = fig.add_subplot(111, projection='3d') # 绘制3D曲面图 ax.plot_surface(x_mesh, y_mesh, z, cmap='viridis') # 设置坐标轴标签 ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_zlabel('Z') # 显示图形 plt.show()
(5)3D等高线图
import matplotlib.pyplot as plt import numpy as np # 数据准备 x = np.linspace(-5, 5, 100) # x轴数据范围 y = np.linspace(-5, 5, 100) # y轴数据范围 x_mesh, y_mesh = np.meshgrid(x, y) # 创建网格 z = np.sin(np.sqrt(x_mesh**2 + y_mesh**2)) # 曲面高度 # 创建3D图形对象 fig = plt.figure(figsize=(10,6), dpi=100) ax = fig.add_subplot(111, projection='3d') # 绘制3D等高线图 ax.contour3D(x_mesh, y_mesh, z, 50, cmap='viridis') # 设置坐标轴标签 ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_zlabel('Z') # 显示图形 plt.show()
以上就是matplotlib的一些简单用法,大家可以参考一下,因为实现方法和实现的图形类型多种多样,这里列举远远不够,简单供大家参考!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。