Python五种方式实现可视化,包括炫酷的动态图(matplotlib、seaborn、plotly、bokeh、pyecharts)——matplotlib传记

一、matplotlib简介

1、介绍

matplotlib是一个功能强大的Python绘图库,用于创建各种类型的图形和可视化数据。它提供了广泛的绘图功能和灵活的配置选项,可以满足不同需求下的数据可视化需求。

2、主要特点
matplotlib的主要特点包括:

简单易用:matplotlib的API设计简单直观,使用起来非常方便。它的语法和Matlab绘图库相似,对于熟悉Matlab的用户来说更容易上手。

多种图形类型:matplotlib支持多种类型的图形,包括折线图、散点图、柱状图、饼图、直方图、箱线图、热力图等。用户可以根据数据类型和需求选择合适的图形类型。

高度可定制:matplotlib提供了丰富的配置选项,用户可以自定义图形的样式、颜色、标签、标题、轴标签等。通过配置选项,可以灵活地调整图形的外观和布局,以满足个性化的需求。

支持多种输出格式:matplotlib可以将图形输出为多种格式,包括图片文件(如PNG、JPEG)、PDF、SVG等。用户可以根据需要选择合适的输出格式,方便地将图形用于报告、文档或网页中。

丰富的扩展库:matplotlib生态系统非常丰富,有许多扩展库可以与之配合使用,如Seaborn、Pandas等。这些扩展库提供了更高级的绘图功能和更方便的数据处理工具,进一步提升了matplotlib的使用体验和效果。

总之,matplotlib是一个功能强大且灵活的Python绘图库,适用于各种数据可视化需求。无论是初学者还是专业人士,都可以通过matplotlib轻松地创建出精美的图形,并更好地理解和分析数据。
3、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库,可以根据具体的需求和数据类型选择合适的图形类型,并灵活地进行定制和配置,以实现所需的数据可视化效果。
4、基本属性设置
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()
运行上述代码将会绘制出一条曲线,并设置了坐标轴的样式和属性。

二、matplotlib实战

1、折线图的实现

简介:

折线图(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()

结果如下:
在这里插入图片描述

到这里折线图的介绍基本结束,大家可以根据不同属性进行不同折线图的实现。

2、柱状图的实现

简介:

柱状图(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()

在这里插入图片描述

3、饼状图的实现

简介:

饼图(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()

在这里插入图片描述

4、箱型图的实现

简介: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()

在这里插入图片描述

5、热力图的实现

简介:

热力图(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()

在这里插入图片描述

6、直方图的实现

简介:

直方图(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()

在这里插入图片描述

7、3D线框图的实现

简介:

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的一些简单用法,大家可以参考一下,因为实现方法和实现的图形类型多种多样,这里列举远远不够,简单供大家参考!

  • 13
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
# PythonPlotlyCodes 《Python 数据分析:基于 Plotly 的动态可视化绘图》 源代码 # 前言   Python是一门非常优秀的编程语言,其语法简捷、易学易用,越来越受到编程人员的喜爱;Python也是一门非常“人性化”的编程语言,其各种语法规则的设计符合人们的思维方式,开发人员可以用最简单的方式实现自己的编程目的,降低时间成本;同时,Python又是一门非常强大的编程语言,其在编程的各个领域都有非常不错的表现,比如在网页开发、程序GUI设计、网络爬虫、科学计算、数据可视化、机器学习与深度学习等领域,Python都有非常好的解决方案来解决现实中的业务问题。   互联网的快速发展为我们积累了庞大的数据,计算机硬件的创新为存储与分析这些数据创造了硬件条件,编程语言的发展为分析这些数据创造了软件条件。在数据分析这个领域,Python有着自己独有的优势,简单易用的特性与强大的开源模块的支持使其成为数据分析领域方便、好用的利器。   Python在数据分析领域的广泛应用离不开其强大的开源模块的支持,大名鼎鼎的NumPy、SciPy、Statsmodels、Pandas等模块的建立与发展奠定了Python在数据分析领域中的重要地位。这些模块简单又好用,它们提供的解决方案能够解决绝大部分业务问题。在人工智能领域,Python也有非常棒的解决方案,如Sklearn、TensorFlow、MXNet、Theano、PyTorch、Caffe等都是非常好的开源模块。尤其是在人工智能中最前沿的深度学习领域,Python几乎占据了霸主的地位。Python借助在数据分析领域中开源模块的优势,于量化投资领域逐渐占据了领头羊的地位。国内外主流量化投资网站大多支持Python语言,其在量化投资领域有一种逐渐淘汰其他语言,一统“江湖”之势。   对数据的分析离不开数据的可视化,相对于Python在数据分析、人工智能、量化投资等领域中的发展,在数据可视化方面的发展有些滞后。最经典的Python可视化绘图库莫过于Matplotlib了,Matplotlib就是MATLAB+Plot+Library,即模仿MATLAB的绘图库,其绘图风格与MATLAB类似。由于MATLAB的绘图风格有些偏古典,为了绘出更漂亮的图像,Python开源社区开发出了Seaborn绘图模块,它本质上是对Matplotlib的封装,绘图效果更符合现代人的审美观。尽管如此,由于Matplotlib是基于GUI的绘图模块,因此存在特有的缺陷。   就笔者使用的经验而言,Matplotlib主要存在两大缺陷:首先,Matplotlib是一个静态的绘图模块,即我们绘出的图像是静态的,就像是用看图软件打开图片一样,没有网页绘图的交互式效果;其次,Matplotlib绘图结果的分享很不方便,在绘图结果分享给别人时只能以图片的方式分享,别人看到的绘图结果完全是静态的,分享体验很不好。Matplotlib一直以来都是Python可视化的主力军,但是确实存在无法克服的缺陷,并且其他的Python绘图模块如Ggplot、Bokeh、Pygal等都比较小众,绘图功能比较单一,完成不了对Matplotlib的替代。   为了解决Python可视化中存在的问题,Plotly应运而生,它是一个基于JavaScript的动态绘图模块。Plotly的绘图效果与我们在网页上看到的动态交互式绘图结果是一样的,其默认的绘图结果是一个HTML网页文件,通过浏览器就可以查看。我们可以把这个HTML文件分享给其他人,对方看到的效果与我们在本机上看到的效果完全一样。   Plotly有着自己强大又丰富的绘图库,支持各种类型的绘图方案。Plotly是基于JavaScript的绘图库,所以其绘图结果可以与web应用无缝集成。总之,Plotly在绘图模块上是Matplotlib强有力的竞争对手,其绘图的种类丰富、效果美观、易于保存与分享等特点越来越受数据分析人士的喜爱,至少笔 -------- 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值