你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

matplotlib基础图表绘制2

2021/12/27 17:34:15

堆叠柱状图

import pandas as pd
from matplotlib import pyplot as plt
hotdog = pd.read_csv(r"hot-dog-places.csv")
fig,ax = plt.subplots(figsize=(10,6))
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False  
x_data = hotdog['Year']
y_data_1 = hotdog['First']
y_data_2 = hotdog['Second']
y_data_3 = hotdog['Third']
plt.bar(x=x_data,height=y_data_1,width=0.6,color='c',edgecolor='k')
plt.bar(x=x_data,height=y_data_2,width=0.6,color='g',edgecolor='k')
plt.bar(x=x_data,height=y_data_3,width=0.6,color='y',edgecolor='k')
ax = plt.gca()
ax.set_title(u'过去30年热狗大胃王比赛结果的柱状图',fontproperties='SimHei',fontsize=14)
ax.set_ylabel('前三名比赛结果')
ax.set_xlabel('年份')
plt.show()

占比堆叠柱形图

import pandas as pd
from matplotlib import pyplot as plt
population = pd.read_csv(r'population-young-working-old.csv')
fig,ax = plt.subplots(figsize=(10,6))
x_data = population['Entity']
y_data_1 = population['underFifteen']
y_data_2 = population['fifteenToSixtyFour']
y_data_3 = population['sixtyFourOrOver']
y1 = y_data_1/(y_data_1 + y_data_2 + y_data_3)
y2 = y_data_2/(y_data_1 + y_data_2 + y_data_3)
y3 = y_data_3/(y_data_1 + y_data_2 + y_data_3)
for y in y3:
    print('%.2f'% y)
l1 = plt.bar(x=x_data,height=y1 + y2 + y3,width=0.7,color='r',edgecolor='k')
l2 = plt.bar(x=x_data,height=y1 + y2,width=0.7,color='y',edgecolor='k')
l3 = plt.bar(x=x_data,height=y1,width=0.7,color='r',edgecolor='k')
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
ax.set_xlabel('各年龄段人口比例')
ax.set_ylabel('国家')
plt.title('2020年各国年轻人工作年龄和人群占比图')
plt.legend(loc='lower left',handles=[l1,l2,l3],labels=['15岁以下','15-64岁','65及岁以上'])
for x1,x2,ly1,ly2 in zip(x_data,x_data,y1,y2):
    plt.text(x1,ly1,'%.2f'% ly1,ha='center',va='bottom')
    ly3 = ly1 + ly2
    plt.text(x1, ly3, '%.2f' % ly3, ha='center', va='bottom')
plt.show()