import matplotlib.pyplot as plt
import squarify
import numpy as np
import pandas as pd
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
#获取数据
df = pd.read_excel("非洲经济总量排行.xlsx")
x=df['国家']
y=df['经济总量']
#t=df['排名']
#genresdf.sum(axis=0) 按行求和
y_count = y.sort_values(ascending=False) # 升序
y_count.index =x
# 设置标签大小为9
plt.rc('font', size=15 )
#画布
fig = plt.figure(figsize=(16, 14))
ax = fig.add_subplot(111)
ax.set_xlim(0, 1000)
ax.set_ylim(0, 1000)
ax.set_xticklabels(['0', '200','400', '600','800','1000'])
ax.set_yticklabels(['0', '200','400', '600','800','1000'])
colors = [plt.cm.Spectral(i/float(len(x))) for i in range(len(x))]
# 绘图details
'''# 绘制热力图 cmap:从数字到色彩空间的映射
sns.heatmap(data=datas.T, linewidths=0.25,
linecolor='white', ax=ax, annot=True,
fmt='d', cmap='Accent', robust=True,
)
'''
plot = squarify.plot(
sizes = y_count, # 指定绘图数据
label =x, # 指定标签
color = colors, # 指定自定义颜色
alpha = 0.6, # 指定透明度
value = y, # 添加数值标签
edgecolor = 'white', # 设置边界框为白色
linewidth =2 # 设置边框宽度为3
)
'''
#绘制数据
for a,b in zip(x,y_count):
ax.text(a,b,format(b,','),ha='center',va='bottom',fontsize=14)
'''
plt.title('非洲国家GDP排行前12的国家(单位/美元)')
plt.show()