import seaborn as sns #画热力图需要库
import pandas as pd #热力图处理数据所用库
import matplotlib.pyplot as plt #Python画图工具
import numpy as np #Python画图工具
热力图需要一个矩阵的数据,根据矩阵的行和列对应的值对应相应的颜色。
df1 = pd.read_csv(‘citycase.csv’) 首先我们采用这个函数读取文件里面的数据形成一个矩阵。
target = pd.pivot_table(df1, index= ‘cities’) 然后采用这个函数将读出的数据的横纵坐标代表值提取出来,这里index= ‘cities’表示纵坐标为cities对应那一列表示的值。横纵标目前为读取文件的第一行表示的值。
下面为数据处理和热力图绘制代码:
df1 = pd.read_csv('citycase.csv')
#print(df1) #可以将其输出调试数据处理是否正确
#通过透视图函数形成绘图数据
target = pd.pivot_table(df1, index= 'cities')
#print(target)
#绘图
ax = sns.heatmap(target, # 指定绘图数据
cmap=plt.cm.YlOrRd, # 指定填充色
linewidths=.1, # 设置每个单元方块的间隔
# annot=True # 显示数值
)
坐标轴的数据编辑是很重要的直接关系着图片是否美观。
plt.xticks(rotation = 0) #设置x轴表明文字的放向,0为平放90为竖着放
xmajorLocator = MultipleLocator(13) #将x轴次刻度标签设置为13的倍数
ax.xaxis.set_major_locator(xmajorLocator)
xmajorFormatter = FormatStrFormatter('%d') #设置x轴标签文本的格式
ax.xaxis.set_major_formatter(xmajorFormatter)
# coding:utf-8
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib.ticker import MultipleLocator, FormatStrFormatter
df1 = pd.read_csv('citycase.csv')
# print(df1)
# 通过透视图函数形成绘图数据
target = pd.pivot_table(df1, index= 'cities')
# print(target)
# 绘图
ax = sns.heatmap(target, # 指定绘图数据
cmap=plt.cm.YlOrRd, # 指定填充色
linewidths=.1, # 设置每个单元方块的间隔
# annot=True # 显示数值
)
plt.xticks(rotation = 0)
xmajorLocator = MultipleLocator(13) #将x轴次刻度标签设置为13的倍数
ax.xaxis.set_major_locator(xmajorLocator)
xmajorFormatter = FormatStrFormatter('%d') #设置x轴标签文本的格式
ax.xaxis.set_major_formatter(xmajorFormatter)
xminorLocator = MultipleLocator(1) #将x轴次刻度标签设置为1的倍数
ax.xaxis.set_minor_locator(xminorLocator)
# 网格模式标明
ax.xaxis.grid(True, which='major', linestyle='-.', linewidth=1, color='black') #x坐标轴的网格使用主刻度
plt.xticks(np.arange(0,85,13),['2011'
,'2012'
,'2013'
,'2014'
,'2015'
,'2016'
,'2017'
,'2018'
# ,'2016',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '
# ,'2017',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '
])
# 旋转y刻度0度,即水平显示
plt.yticks(rotation = 0)
plt.savefig('heatmap.pdf')
# 显示图形
plt.show()