气泡图简介:
气泡图(Bubble Chart)是一种数据可视化图形,主要用于展示多个数据点之间的关系。
气泡图通过气泡的大小,位置和颜色可以展示数据之间的关系。在气泡图中,横轴和纵轴通常表示数据的两个维度,而气泡的半径和位置则表示数据的值。
气泡图可在二维平面上展示多元数据间的关系。
下面以python中的鸢尾花数据集来展示,气泡图的绘制和对数据的展现
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.datasets import load_iris
import numpy as np
import seaborn as sns
iris = load_iris() # 这里,从sklearn库中加载鸢尾花数据集 获得的数据集是一个列表,其中有两列,一列是鸢尾花的特征,一列是鸢尾花的种类
x = iris.data # 鸢尾花的特征数据,其中包含多列数据
y = iris.target # 鸢尾花的种类,仅一列数据
data = pd.DataFrame(x,columns=iris.feature_names)
data['Target'] = y #值为 0,1,2
plt.figure(figsize=(15,10)) # 设置画幅的大小
plt.rcParams['font.sans-serif'] = ['SimHei']# 中文显示 设置字体为黑体
# 该部分为用参数c控制了气泡的颜色
# size = list(data["petal length (cm)"].astype(float)/0.002) # petal length (cm)的特征以气泡大小来表现
# 生成气泡图,X轴为sepal length (cm),y轴为sepal width (cm)
# c 表示的颜色,不同鸢尾花种类颜色不一样,alpha 表示为透明度 0-1
# plt.scatter(data['sepal length (cm)'].astype(float),data['sepal width (cm)'].astype(float),c=data['Target'],alpha=0.6)
以循环的方法控制气泡的颜色
# 设置3个颜色(RGB的方法)
colors = [(0.973, 0.902, 0.125),(0.122, 0.573, 0.545),(0.267, 0.16, 0.353)]
# enumerate()函数获取每个类别的索引和名称,使用colors列表指定每个类别的颜色
for i ,Target in enumerate(data['Target'].unique()):
size = list(data[data['Target']==Target]['petal length (cm)'].astype(float)/0.002)
plt.scatter(data[data['Target']==Target]['sepal length (cm)'].astype(float),data[data['Target']==Target]['sepal width (cm)'].astype(float),s=size,alpha=0.6,c=colors[i])
plt.xlabel('sepal length (cm)',fontsize=20)
plt.gca().xaxis.set_label_coords(0.5,-0.1)# 调整X轴标题与X轴的距离
plt.ylabel('sepal width (cm)',fontsize=20)
plt.gca().yaxis.set_label_coords(-0.08,0.5)# 调整y轴标题与y轴的距离
plt.title('气泡图',fontsize=30,pad=15)
plt.tick_params(labelsize=20)# 刻度字体大小 20
# 设置图例
# data["target"].unique():以鸢尾花的三个类别当作图例标签
# fontsize=5:设置图例字体大小为5 prop={'size': 15}`:设置图例字体大小为15,应用时,这两个参数作用类似,只设置一个即可
# loc='upper right':设置图例位置为右上角,loc参数可选如下:
# 'upper right':右上 'upper left' :左上 'lower left':左下 'lower right':右下
# 还可以通过bbox_to_anchor参数调整图例的位置:
bbox_to_anchor参数设置为(1.05, 1),表示图例的位于图形的右上角的某个位置。
# frameon = False去除图例边框,即不要图例的外边框。frameon = True绘制图例的外边框
# framealpha:控制图例的透明度
# handlelength=2:设置图例标记长度为2
# borderpad=1.5控制图例外边框的大小
# facecolor = ‘yellowgreen’ 设置边框填充色为黄绿色
# edgecolor = ‘whtie’ 设置图例边框的颜色为白色
# ncol = 3:横放,参数值为3,是因为图例中有三个标签值
legend =plt.legend(data['Target'].unique(),fontsize=5,loc='upper right',frameon = True,framealpha=0.5,handlelength=2,prop={'size':5},borderpad=1.5,facecolor='yellowgreen',edgecolor='white',ncol=3)
# 设置图例边框的宽度
legend.get_frame().set_linewidth(1)
# 调整matplotlib图例中的可视化图形大小和透明度
for handle in legend.legendHandles:
handle.set_sizes([100])
handle.set_alpha(0.6)
legend.set_title('图例')
# 设置图例字体大小
legend.get_title().set_fontsize(fontsize=10)
plt.show()