首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Matplotlib数据关系型图表(4)

Matplotlib数据关系型图表(4)

作者头像
python数据可视化之路
发布2023-02-23 20:58:17
发布2023-02-23 20:58:17
5900
举报

二、层次关系型图表(2)

2.2 相关系数图

相关系数图是热力图的一种形式,只不过传入的数据是已经计算好的各变量的相关系数。

现有一组数据,记录了不同作物的产量,现要求将他们相关系数表示。

代码语言:javascript
复制
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官网。相关系数图的代码如下:

代码语言:javascript
复制
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与各变量的关系,代码如下:

代码语言:javascript
复制
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中不能很好支持,就不再做介绍。以后如果涉及到相应的库可以补充。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python数据可视化之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档