1、气泡图
气泡图是一种在xy轴上显示三个维度的数据的有效方式。在气泡图中,基本上,每个气泡代表一个数据点。横坐标和纵坐标的位置代表两个维度,气泡的大小则代表第三个维度。
在这个例子中,我们用numpy库生成了一些随机数据,然后用matplotlib库的scatter函数创建了一个气泡图。在scatter函数中,参数x, y分别代表数据点的x和y坐标,参数s代表数据点(即气泡)的大小。
import matplotlib.pyplot as plt
import numpy as np
# 随机生成数据
np.random.seed(0)
x = np.random.rand(25)
y = np.random.rand(25)
z = np.random.rand(25) * 1000 # 这将决定气泡的大小
# 创建气泡图
plt.scatter(x, y, s=z)
# 添加图形的标题和x,y轴的标签
plt.title('bubble')
plt.xlabel('X')
plt.ylabel('Y')
# 显示图形
plt.show()
2、影响图
影响图(Influence Diagram)是一种用于展示变量之间因果关系的图形化工具。在Python中,可以使用NetworkX和Matplotlib等库来绘制影响图。
import matplotlib.pyplot as plt
import networkx as nx
# 创建一个有向图
G = nx.DiGraph()
# 添加节点
G.add_node("X")
G.add_node("Y")
G.add_node("Z")
# 添加边
G.add_edge("X", "Y")
G.add_edge("Y", "Z")
G.add_edge("X", "Z")
# 绘制图形
pos = nx.spring_layout(G)
nx.draw(G, pos, with_labels=True)
plt.show()
3、条形图
条形图(Bar chart)是一种以条形为主要表现形式的图形化数据可视化工具。它通过将数据值转换为条形的长度或高度来展示数据,以便直观地比较和解读不同类别的数据。条形图常用于展示两个或多个类别的数据集之间的相对大小、频次或百分比等。
条形图的基本构成包括横轴和纵轴。横轴通常代表分类或类别,纵轴则代表数值或定量数据。根据数据的类型和可视化需求,可以选择使用垂直条形图或水平条形图。在垂直条形图中,条形的长度与数据值成正比;而在水平条形图中,条形的宽度与数据值成正比。
条形图具有多种变体和表现形式,例如单轴条形图、双轴条形图、分组条形图、堆叠条形图等。通过不同的颜色、标记、标签和其他可视化元素可以增加条形图的易读性和清晰度。条形图广泛应用于数据可视化、商业报告、统计分析和决策支持等领域。
import matplotlib.pyplot as plt
# 数据
categories = ['Category1', 'Category2', 'Category3', 'Category4', 'Category5']
values = [5, 8, 3, 6, 4]
# 创建条形图
plt.bar(categories, values)
# 添加标题和轴标签
plt.title('Simple Bar Chart')
plt.xlabel('Categories')
plt.ylabel('Values')
# 显示图表
plt.show()
4、箱线图
箱线图(Box Plot)是一种用于展示一组数据分散情况资料的统计图。包含一组数据的最大值、最小值、中位数、及上下四分位数。因此,箱线图可以提供关于数据分布的有用信息。
以下是一些箱线图的基本构成:
箱体:包含了所有数据的整体范围,也被称为“箱”。
中位数:标示出数据的“中点”。在箱线图中,中位数通常会有一条线直接连到箱体,且与箱体的中心对齐。
四分位数:标示出数据的“四分位数”,也就是将数据分为四个等份的四条线。在箱线图中,四分位数通常以“+”符号表示,且与箱体的上下边缘对齐。
须”的长度:箱线图中的“须”是两个方向向外延伸的线段,从四分位数的位置向两侧延伸。须的长度不会超过箱体的长度。
“异常值”:如果数据集中存在极端的或异常的数据点,它们会被单独标示出来,通常会以小圆圈或者是其他特殊的标记来表示。
通过观察箱线图,你可以快速了解这组数据的集中趋势、离散程度以及异常值。
import matplotlib.pyplot as plt
import numpy as np # 创建数据
np.random.seed(10)
data = np.random.normal(100, 20, 100) # 绘制箱线图
plt.boxplot(data) # 设置图表标题和轴标签
plt.title('Box Plot')
plt.xlabel('Data')
plt.ylabel('Value') # 显示图表
plt.show()
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
# 创建数据
np.random.seed(10)
data = np.random.normal(100, 20, 100)
# 绘制箱线图
sns.boxplot(x=data)
# 设置图表标题和轴标签
plt.title('Box Plot')
plt.xlabel('Data')
plt.ylabel('Value')
# 显示图表
plt.show()
5、核密度图
核密度图(Kernel Density Estimate,KDE)是一种用于估计随机变量概率密度函数的非参数方法。在 Python 中,可以使用多种库来绘制核密度图,其中包括 Seaborn、Matplotlib 和 SciPy。
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
# 生成示例数据
data = np.random.normal(size=100)
# 使用 Seaborn 绘制核密度图
sns.kdeplot(data, label='KDE')
# 显示图形
plt.legend()
plt.show()
import matplotlib.pyplot as plt
import numpy as np
# 生成示例数据
data = np.random.normal(size=100)
# 使用 Matplotlib 绘制核密度图
plt.hist(data, density=True, alpha=0.5, label='KDE')
# 显示图形
plt.legend()
plt.show()
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import gaussian_kde
# 生成示例数据
data = np.random.normal(size=100)
# 使用 SciPy 计算核密度估计
kde = gaussian_kde(data)
x_range = np.linspace(min(data) - 1, max(data) + 1, 1000)
kde_values = kde(x_range)
# 使用 Matplotlib 绘制核密度图
plt.plot(x_range, kde_values, label='KDE')
# 显示图形
plt.legend()
plt.show()
6、小提琴图
小提琴图(Violin plot)是一种用于显示数据分布情况的图形。它类似于箱线图,但提供了更多的信息,如数据的核密度估计和四分位数。在Python中,可以使用Seaborn库来绘制小提琴图。
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
# 生成一些随机数据
rs = np.random.RandomState(0)
n, p = 40, 8
d = rs.normal(0, 2, (n, p))
d += np.log(np.arange(1, p + 1)) * -5 + 10
# 绘制小提琴图
sns.violinplot(data=d)
# 显示图形
plt.show()
7、热图
热图是一种可视化工具,用于展示二维数据集中的数据信息,其中颜色表示单元格的值。在热图中,行列的坐标是二维数据的标识符,每个单元格的颜色深浅表示其对应值的大小。通过热图,我们可以快速浏览和比较不同数据集中的数据分布和特征。
热图有多种类型,包括点热图、条形图热图、气泡热图、颜色映射热图等。其中点热图和条形图热图是最常用的热图类型之一。点热图以点的颜色来表示每个单元格的值,而条形图热图则使用条形的长度和颜色来表示每个单元格的值。
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
# 创建一个随机数据集
data = np.random.rand(10, 12)
# 创建一个热图
heatmap = sns.heatmap(data)
# 显示图形
plt.show()
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
# 创建一个随机数据集
data = np.random.rand(10, 12)
# 创建一个热图
heatmap = sns.heatmap(data, cmap='coolwarm')
# 显示图形
plt.show()
8、箭靶图
箭靶图,也叫做蜘蛛网图或者雷达图,是一种用于显示多变量数据的图形。它由一个中心点向外辐射出多条线段,每条线段代表一个变量,线段的长度代表该变量的数值大小。箭靶图的每个角都代表一个变量,从中心点到每个角的线段表示该变量的数值大小。箭靶图通常用于显示性能数据,如产品的性能指标、公司的财务数据等。在箭靶图中,每个变量的最大值和最小值通常被标出来,以便更好地了解每个变量的数值范围。箭靶图的主要优点是它可以同时显示多个变量的数值大小,并且可以通过线段的长度和角度来表示各个变量之间的关系。
import matplotlib.pyplot as plt
import numpy as np
# 创建一个新的figure
fig, ax = plt.subplots()
# 创建箭靶的外圈
circle1 = plt.Circle((0, 0), 10, fill=False)
circle2 = plt.Circle((0, 0), 20, fill=False)
circle3 = plt.Circle((0, 0), 30, fill=False)
circle4 = plt.Circle((0, 0), 40, fill=False)
circle5 = plt.Circle((0, 0), 50, fill=False)
circle6 = plt.Circle((0, 0), 60, fill=False)
circle7 = plt.Circle((0, 0), 70, fill=False)
circle8 = plt.Circle((0, 0), 80, fill=False)
# 将圆添加到图中
ax.add_artist(circle1)
ax.add_artist(circle2)
ax.add_artist(circle3)
ax.add_artist(circle4)
ax.add_artist(circle5)
ax.add_artist(circle6)
ax.add_artist(circle7)
ax.add_artist(circle8)
# 生成数据点
x = 60*np.random.randn(100)
y = 60*np.random.randn(100)
ax.scatter(x, y, color='r', alpha=0.5)
# 设置x轴和y轴的限制,使得它们的范围都是[-90, 90]
ax.set_xlim([-90, 90])
ax.set_ylim([-90, 90])
# 添加一个标题,设置字体为SimHei解决中文无法显示的问题
plt.title('箭靶图', fontproperties='SimHei')
# 显示图形
plt.show()
9、折线图
折线图是一种以线条表示数据信息的图表类型。在折线图中,数据点的相继关系通过线条的起伏和连贯性来表现。折线图通常用于显示时间序列或连续数据的变化情况。
import matplotlib.pyplot as plt
import numpy as np
# 定义数据
x = np.linspace(0, 10, 100) # 在0到10之间均匀取100个点
y = np.sin(x)
# 绘制折线图
plt.figure(figsize=(10, 6)) # 设置图形大小
plt.plot(x, y, label='sin(x)', linewidth=2, linestyle='-', color='blue') # 绘制折线图,并设置线宽、线型和颜色
plt.title('Sine Function') # 设置图形标题
plt.xlabel('x') # 设置x轴标签
plt.ylabel('y') # 设置y轴标签
plt.xticks(np.arange(0, 11, 1)) # 设置x轴刻度
plt.yticks(np.arange(-1, 1 + 0.2, 0.2)) # 设置y轴刻度
plt.grid(True) # 显示网格线
plt.legend() # 显示图例
# 显示图形
plt.show()
10、饼图
饼图(Pie Chart)是一种以圆形表示数据信息的图表类型,通过将圆周分割成若干个扇形,每个扇形对应一个数据项或类别,以扇形的面积或长度来表示数据量或占比。
import matplotlib.pyplot as plt
# 定义数据
labels = ['A', 'B', 'C', 'D']
sizes = [15, 30, 45, 10]
# 绘制饼图
plt.figure(figsize=(6, 6)) # 设置图形大小
plt.pie(sizes, labels=labels, autopct='%1.1f%%') # 绘制饼图,并设置标签和百分比格式
# 显示图形
plt.show()
11、散点图
散点图(Scatter plot)是一种用于展示两个变量之间关系的图形,它用点的密度和位置来表示数据点的分布情况。在散点图中,每个点代表一个数据点,x轴和y轴分别表示两个变量,通过观察点的位置可以大致了解这两个变量之间的关系。
散点图的优点是能够直观地反映两个变量之间的关系,并且可以方便地添加其他参考线或数据集来帮助分析和预测。它的缺点是在数据点较多时,图形可能会显得比较杂乱,不易读出准确的关系。
import matplotlib.pyplot as plt
import numpy as np
# 定义数据
x = np.random.randn(100)
y = np.random.randn(100)
# 绘制散点图
plt.figure(figsize=(6, 6)) # 设置图形大小
plt.scatter(x, y) # 绘制散点图
# 显示图形
plt.show()