Python绘图记录专栏

因经常需要画一些图,现在专门开一篇博客,记录各种画图使用的代码,目前主要用到的画图包有matplotlib,seaborn,pandas,pyecharts,seaborn等多种。博客不定期更新,用到即记录。

seaborn画热力图代码

直接上代码

# -*- coding: utf-8 -*-
"""
Created on Tue Aug  3 09:55:34 2021

@author: HP
"""
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()

#解决中文显示问题
plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号
data = pd.read_excel('XX.xlsx', engine='openpyxl')
data.set_index('小时', inplace=True)
# 列逆序
data = data[list(data.columns)[::-1]]
# 按列求百分比
data = data.div(data.sum(axis=0), axis=1)
f, ax = plt.subplots(figsize=(9, 6))
#绘制热力图,还要将数值写到热力图上
sns.heatmap(data, annot=True, fmt="0.3f", ax=ax, cmap="OrRd")
#设置坐标字体方向
label_y = ax.get_yticklabels()
plt.setp(label_y, rotation=360, horizontalalignment='right')
label_x = ax.get_xticklabels()
plt.setp(label_x, rotation=45, horizontalalignment='right')
plt.title('seaborn热力图', fontsize=30)
plt.xlabel('X轴标签', fontsize=24)
plt.ylabel('Y轴标签', fontsize=24)
plt.xticks(fontsize=18)
plt.yticks(fontsize=18)
plt.show()

简单解释:

plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号

这两行代码画图常用,分别解决中文标签和负号乱码的问题。

data = pd.read_excel('XX.xlsx', engine='openpyxl')这行代码写入excel文件,但新版的xlsd是不支持xlsx文件的,所以要加入engine='openpyxl'这个参数。

data.set_index('小时', inplace=True)将dataframe的某列设置为索引,并替换原索引,我的列索引标签是小时。

data = data[list(data.columns)[::-1]]这行代码不是必须的,看个人数据,主要作用是将列数据逆序排一下。

data = data.div(data.sum(axis=0), axis=1)同上,也非必须,作用是显示列数据的百分比,而非原始数值。

sns.heatmap(data, annot=True, fmt="0.3f", ax=ax, cmap="OrRd")这是关键代码,annot=True作用是将数据值放到热力图上,fmt="0.3f"是设置数据的格式,cmap="OrRd"设置热力图颜色深浅,根据个人喜好需求设置。

后面是常规设置,不再解释。

看下效果:
在这里插入图片描述

后续待补充。

散点图及坐标轴间隔设置

x = data.XX.values.tolist()
y1 = data.XXX.values.tolist()
y11 = [x * 20 for x in y1]
y2 = data.XX.values.tolist()
y22 = [x * 20 for x in y2]

plt.scatter(x, y1, s=y11, c='blue')                                            # s是圆形标记的大小
plt.scatter(x, y2, s=y22, c='red')
plt.legend(["XX", "XXX"], fontsize=24)
plt.xlabel("MM", fontsize=28)
plt.ylabel("NN", fontsize=28)
plt.title("TTT", fontsize=40)
plt.xticks(range(0, 42, 2), fontsize=22)                                       # 设置坐标轴间隔
plt.yticks(range(0, 22, 2), fontsize=22)

猜你喜欢

转载自blog.csdn.net/u012848304/article/details/119347010