from pathlib import Path
import pandas as pd
import numpy as np
import re
import matplotlib as mpl
mpl.use('agg')
%pylab inline
chtfont2 = mpl.font_manager.FontProperties(fname='/Library/Fonts/儷黑 Pro.ttf')
chtfont = mpl.font_manager.FontProperties(fname='/Users/liang/Library/Fonts/DFHeiStd-W5.otf')
rcParams['figure.figsize'] = (10, 4)
rcParams['savefig.format'] = 'svg'
import brewer2mpl
Populating the interactive namespace from numpy and matplotlib
final_dir = Path('../總整理')
RESULT_DIR = Path('../輸出圖表/')
df = pd.read_excel('../總整理/raw/按主題分類廣告金額.xlsx', 0)
all_disp = set(df['部會'])
color_set = brewer2mpl.get_map('Set3', 'Qualitative', len(all_disp))
disp_color = pd.DataFrame(
[color for color in color_set.hex_colors],
index=list(all_disp),
columns=['color']
)
act_spend = df.sort(columns=['金額', '部會'])
y_pos = np.arange(len(act_spend)) * 2
fig = plt.figure(figsize=(10,8))
bar_list = plt.barh(
y_pos,
act_spend['金額'],
align='center', alpha=0.8
)
for bar, color in zip(bar_list, disp_color.ix[act_spend['部會'], 'color'].values):
bar.set_color(color)
plt.yticks(y_pos, act_spend['活動'], font_properties=chtfont)
title_font = chtfont.copy()
title_font.set_size(16)
plt.title('政策廣告投入議題比較', font_properties=title_font)
# plt.grid(False)
ax = fig.axes[0]
ax.patch.set_visible(False)
ax.set_ylim(bottom=-2, top=y_pos[-1]+2)
# make legend
ax.legend(
[plt.Rectangle((0, 0), 1, 1, color=color) for color in disp_color['color']],
disp_color.index.tolist(),
loc='lower right',
prop=chtfont
)
plt.savefig(str(RESULT_DIR/'活動預算排行.svg'), frameon=True)