使用python画出马赛克图

Posted Phile-matology

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用python画出马赛克图相关的知识,希望对你有一定的参考价值。

终于从数模比赛里抽身出来了,重新开始更新我的博客。看的人多少不重要,至少应该保持学习的习惯,写给自己看也是好的。

数模比赛里使用了python的matplotlib库来绘制马赛克图,用以描述新旧变量之间的相关性。通常在描述一组变量的相关系数时也时常会遇到这种形式的图。

一张形似这样的马赛克图能够利用颜色的深浅清楚的显示出变量相关程度,越深的颜色代表越高的相关程度。

在实现的过程中,借鉴了csdn上一份在坐标轴格子中填上指定颜色的代码。将要用来决定颜色深浅的数据导入,之后调整参数,在预计的范围内遍历所有方格,并利用决定数据处理后输入RGB三元组等进行渐变色的处理。之后调整轴刻度和显示范围,最后输出。

需要注意的是,输入color参数的元组其实可以有四个元素,分别代表RGB和Alpha。Alpha影响的是不透明度,是我认为最适合做受影响量的元素。需要注意的是,即便通过标准化使得参数的实际输入值能在(r1,g1,b1,a1)到(r2,g2,b2,a2)之间变化,也不一定能呈现出良好的分辨效果,因为一组对比分明梯度突出的颜色不一定在四个参数上均保持单调,如果要调整出色彩的变化,则需要对rgb色彩空间有更深入的研究,或者寻找到一个更精确的函数使得随着控制矩阵中参数值的变化,实际色彩能在颜色空间中预计的复杂曲线上均匀分布。

实现代码如下:

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.ticker import MultipleLocator, FormatStrFormatter
import pandas as pd
ax=plt.subplot(111) #注意:一般都在ax中设置,不再plot中设置
base = [[43.52415279,0.171167607,0.949150597,0.537740419,0,0.077707502,0.34940187,1,0.427823377,0.225493431],
[24.01111231,0.603131093,1,0.587208559,0.497111237,0.581739113,0.803619063,0,0.420073441,0.510062647],
[11.33458813,0.682588116,0.009080941,0.653367677,0,0.228701053,0.507700635,0.291378262,0.276630137,1],
[10.88615056,0.010881135,0.008154996,0.817448081,1,0.069059213,0,0.07885205,0.06205499,0.066138246],
[6.919748634,0,0.216365352,0.494286281,0.051161003,1,0.207937394,0.286797799,0.258626256,0.264320298],
[2.459507492,1,0.778585681,0.605509542,0.558508976,0.682487197,0.056163155,0.66307496,0,0.565892723],
[0.810487836,0.764477533,0.4472523,0.248112477,0.410310543,0.528794353,0,0.234337877,1,0.342001398],
[0.042053848,0.838850561,0.401543169,0,0.836124012,0.864181401,1,0.82302059,0.305449539,0.440632198],
[0.012198394,1,0.394399427,0.982218367,0.390090331,0.591117381,0.85629048,0.639190913,0.653017412,0]]
 
for high in range(1,10):
    for i in range(9):
        x1= np.linspace(i,i+1, 10)
        ax.fill_between(x1,high-1,high,cmap=\'cool\',facecolor=(42/256,102/256,236/256,base[i][high]))

#
plt.xlim(0, 9)
plt.ylim(0, 9)
 
ax.xaxis.set_major_locator(MultipleLocator(1))#设置y主坐标间隔 1
ax.yaxis.set_major_locator(MultipleLocator(1))#设置y主坐标间隔 1
ax.xaxis.grid(True,which=\'major\')#major,color=\'black\'
ax.yaxis.grid(True,which=\'major\')#major,color=\'black\'
plt.show()

 

以上是关于使用python画出马赛克图的主要内容,如果未能解决你的问题,请参考以下文章

将几万张图片合成一张图片,制作一个超赞的马赛克图

使用 R 创建“艺术”马赛克图片(*不是*统计马赛克图)

R语言可视化两个以上的分类(类别)变量之间的关系使用vcd包中的Mosaic函数创建马赛克图( Mosaic plots)分别可视化两个三个四个分类变量的关系的马赛克图

将文本标签添加到 ggplot2 马赛克图

R语言 马赛克图

如何制作 20 个数据帧的马赛克图并将它们放在 r 中的一页中?