
二、层次关系型图表(2)
2.2 相关系数图
相关系数图是热力图的一种形式,只不过传入的数据是已经计算好的各变量的相关系数。
现有一组数据,记录了不同作物的产量,现要求将他们相关系数表示。
vegetables = ["cucumber", "tomato", "lettuce", "asparagus",
"potato", "wheat", "barley"]
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]])数据来自Matplotlib官网。相关系数图的代码如下:
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import matplotlib as mpl
#添加额外子区代码,以ax为基准,添加指定宽度和高度的区域
def add_axes(ax, pad, width):
axpos = ax.get_position()
caxpos = mpl.transforms.Bbox.from_extents(
axpos.x1 + pad,
axpos.y0,
axpos.x1 + pad + width,
axpos.y1)
cax = ax.figure.add_axes(caxpos)
return cax
corr_matrix = np.corrcoef(harvest) #计算相关系数矩阵(重点)
fig, ax = plt.subplots(figsize = (5, 5))
#绘制相关系数热力图
cbar = ax.imshow(corr_matrix, cmap = 'jet')
#设置坐标轴标签
ax.set_xticks(range(0, 7, 1), labels = vegetables, rotation = 45, size = 15)
ax.set_yticks(range(0, 7, 1), labels = vegetables, size = 15)
#为每个方格填充数值,相关系数
for i in range(len(vegetables)):
for j in range(len(vegetables)):
text = ax.text(j, i, round(corr_matrix[i, j], 3), ha = 'center', va = 'center', color = 'w', font = font1)
#绘制色条,因为要和原图等高,就额外添加了一个子区
cbar = plt.colorbar(cbar, cax = add_axes(ax, 0.02, 0.05))
cbar.set_label('R', rotation = -90, size = 18, labelpad = 12)
plt.show()
2.3 平行坐标系
平行坐标系是可视化高维几何和分析多元数据的常用方法。克服了传统笛卡尔直角坐标系容易耗尽空间、难以表达三维以上数据的问题。平行坐标将高维数据的各个变量用一系列相互平行的坐标轴表示,变量值对应轴上位置。
注:本文的平行坐标系使用pycharts库进行绘制。
现有一组数据,记录了各站点的PM2.5真实值和预测值及其其他变量。

现用平行坐标系表达PM2.5、预测的PM2.5与各变量的关系,代码如下:
from pyecharts import options as opts
from pyecharts.charts import Page, Parallel
file = r"D:\公众号\Pandas基本操作\2015预测.csv"
df = pd.read_csv(file)
arr = df.values.tolist() #注意数据的形式为二维列表,每一个列表都是一条线
c = (
Parallel()
.add_schema(
[
{"dim": 0, "name": "aod"},
{"dim": 1, "name": "t2m"},
{"dim": 2, "name": "ws"},
{"dim": 3, "name": "pm2_5"},
{"dim": 4, "name": "pred_pm2_5"},
]
)
.add('sample1', arr)
.set_global_opts(title_opts=opts.TitleOpts(title="Parallel-基本示例"))
)
c.render(r"C:\Users\Smile\Desktop\坐标系.html")
层次关系型图表介绍到此结束,由于一些图表(树形图、旭日图、矩形树状图等)在matplotlib中不能很好支持,就不再做介绍。以后如果涉及到相应的库可以补充。
本文分享自 python数据可视化之美 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!