42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
import seaborn as sns
|
|
import pandas as pd
|
|
import matplotlib.colors as mc
|
|
|
|
# For defining color map
|
|
def NonLinCdict(steps, hexcol_array):
|
|
cdict = {'red': (), 'green': (), 'blue': ()}
|
|
for s, hexcol in zip(steps, hexcol_array):
|
|
rgb = mc.hex2color(hexcol)
|
|
cdict['red'] = cdict['red'] + ((s, rgb[0], rgb[0]),)
|
|
cdict['green'] = cdict['green'] + ((s, rgb[1], rgb[1]),)
|
|
cdict['blue'] = cdict['blue'] + ((s, rgb[2], rgb[2]),)
|
|
return cdict
|
|
|
|
# Load data
|
|
thedata = pd.read_csv("data/month_hour_pct_matrix.csv")
|
|
mns = thedata.iloc[0:12, 0]
|
|
pmat = thedata.iloc[0:12, 1:25]
|
|
|
|
# Set figure size
|
|
sns.set(rc={'figure.figsize':(11,4.5), 'pdf.fonttype': 42})
|
|
|
|
# Make color map
|
|
# hc = ['#dff5ee', '#92dee9', '#3fc1f9', '#5598fd', '#a75bd8', '#d4007f']
|
|
hc = ['#f0f0f0', '#c3dde3', '#acc6cc', '#aeaaaa', '#c0877c', '#da5241']
|
|
th = [0, 0.1, 0.2, 0.3, .4, 1]
|
|
cdict = NonLinCdict(th, hc)
|
|
cm = mc.LinearSegmentedColormap('custom', cdict)
|
|
|
|
# Heatmap
|
|
p1 = sns.heatmap(
|
|
pmat,
|
|
square=True,
|
|
linewidths=0.1,
|
|
yticklabels=mns,
|
|
cmap=cm)
|
|
p1.set_xticks([0.5,6.5,12.5,18.5,23.5])
|
|
p1.set_xticklabels(["12am", "6am", "noon", "6pm", "11pm"])
|
|
fig = p1.get_figure()
|
|
|
|
# Save file
|
|
fig.savefig("pmat-heatmap.pdf") |