IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> python热力图+修改字体和颜色 -> 正文阅读

[游戏开发]python热力图+修改字体和颜色

用python画热力图不难,但是想要调整热力图中的各种字体和颜色就需要深究其中各种参数的功能了,这里让我们看一下如何一步步实现如下图所示的热力图:
在这里插入图片描述
1、导入所需的各种包,特别关注其中关于字体的部分

import seaborn as sns
import pandas as pd
import numpy as np
import matplotlib as mpl
from matplotlib import cm
import matplotlib.pyplot as plt
from sklearn.metrics import confusion_matrix
from matplotlib.colors import ListedColormap, LinearSegmentedColormap

# 设置西文字体为新罗马字体
from matplotlib import rcParams

2、读入excel文件,路径因人而异

con_mat = pd.read_excel('文件路径', index_col=None, header=None)

3、df.dropna()函数用于删除dataframe数据中的缺失数据

con_mat = con_mat.dropna(axis=1,how='all')
con_mat = con_mat.dropna(axis=0,how='any')
num_para = con_mat.iloc[:, 1].values-1
# viridis = cm.get_cmap('viridis', 8)

4、涉及到颜色的一些设置

viridis = cm.get_cmap('YlGnBu', 256)
newcolors = viridis(np.linspace(0, 1, 256))
pink = np.array([203/256, 4/256, 71/256, 1])
newcolors[208:, :] = pink
newcmp = ListedColormap(newcolors)

5、字体以及框架的一些设置

font_size = 40 * 16 * (1/len(num_para))
label_size = 27 * 16 * (1/len(num_para))
config = {
    "font.family":'Times New Roman',  # 设置字体类型
    "font.size": font_size,
#     "mathtext.fontset":'stix',
    "axes.labelsize": 50,  # 坐标系-标签-字号
    "xtick.direction":'out',   # 刻度-方向
    "ytick.direction":'out',  # 刻度-方向
    "xtick.labelsize": label_size,  # 刻度-标签-字号
    "ytick.labelsize": label_size,  # 刻度-标签-字号
}
rcParams.update(config)

range(1,con_mat.iloc[:,2:].shape[1])
plt.rcParams['font.family'] = 'serif'
plt.rcParams['font.serif'] = ['Times New Roman'] + plt.rcParams['font.serif']
plt.rcParams['mathtext.fontset'] = 'stix'
con_mat.iloc[:,2:].iloc[1,1].round(2)

6、最后的作图部分

mask = np.zeros_like(con_mat.iloc[:,2:])
mask[np.triu_indices_from(mask)] = True
with sns.axes_style("white"):
    fig,ax=plt.subplots(1, 1, figsize=(30, 30))
#     ax = sns.heatmap(con_mat, cmap="YlGnBu", annot=True, mask=mask, square=True)
    ax = sns.heatmap(con_mat.iloc[:,2:], cmap=newcmp, cbar=False, vmin=-0.6, vmax=1, mask=mask, square=True)
for i in range(con_mat.iloc[:,2:].shape[0]):
    for j in range(con_mat.iloc[:,2:].shape[1]):
        if j<i:
            text = ax.text(j+0.5,i+0.5,con_mat.iloc[:,2:].iloc[i,j].round(2),ha="center", va="center", color="k",fontsize=font_size , fontname='Times New Roman')

text = ax.text(1/2 * len(num_para)-0.38, 1/15 * len(num_para),  't ', ha="center", va="center", color="k", fontsize=100,
               fontname='Times New Roman', fontweight='bold', style='italic')

text = ax.text(1/2 * len(num_para), 1/15 * len(num_para),  ' = 3 s', ha="center", va="center", color="k", fontsize=100,
               fontname='Times New Roman', fontweight='bold')
# text = ax.text(7/15 * len(num_para), 1/15 * len(num_para),  ' = 1 s', ha="center", va="center", color="k", fontsize=100,
#                fontname='Times New Roman', fontweight='bold')
# sns.set()
# f,ax=plt.subplots(1, 1, figsize=(30, 30))
# sns.heatmap(con_mat, cmap="YlGnBu", annot=True) #画热力图
ax.spines['top'].set_visible(True)
ax.spines['right'].set_visible(True)
ax.spines['bottom'].set_visible(True)
ax.spines['left'].set_visible(True)

bwith = '10'
ax.spines['bottom'].set_linewidth(bwith)
ax.spines['left'].set_linewidth(bwith)
ax.spines['top'].set_linewidth(bwith)
ax.spines['right'].set_linewidth(bwith)

x = 10/11 * len(num_para)
y = 1/12 * len(num_para)

x_1 = -3/11 * len(num_para)
y_1 = 0 * len(num_para)

ax.tick_params(top='off',bottom='off',left='off',right='on')
# '$f_h$($\hat x $)'
ax.text(x, y, "(f)", fontsize=120, fontfamily='Arial', fontweight='bold')
# rcParams.update(config)
x_label = []
x_label_total = ['A$_{MAX}$', 'Arial', 'Arial$^3$', 'CAA', 'CAA$^3$', 'CAA$_{input}$', 'CAD', 'CAD$_{input}$',
                   'CAV', 'CAV$^3$', 'CAV$_{input}$', 'ID', 'ID$_{input}$', 'Ia$_{input}$', 'Id2',
                   'Id2$^3$', 'Id2$_{input}$', 'Iv2', 'Iv2$^3$', 'Iv2$_{input}$', 'Pa', 'Pa$^3$', 'Pa$_{input}$',
                   'Pd', 'Pd$^3$', 'Pd$_{input}$', 'Pv', 'Pv$^3$', 'Pv$_{input}$', 'τc', 'ID$^3$', 'TP', 'Tva']
for i in num_para:
    print(i)
    x_label.append(x_label_total[i])
    
ax.set_xticklabels(x_label, rotation='vertical', fontfamily='Times New Roman')
ax.set_yticklabels(x_label, rotation='horizontal', fontfamily='Times New Roman')

# ax.set_title('Correlation coefficient') #标题
ax.set_xlabel('') #x轴
ax.set_ylabel('') #y轴
  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-04-09 18:49:29  更:2022-04-09 18:49:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/16 21:14:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码