最近有些偷懒,一来素材匮乏,二来素材每天一写会花费不少功夫,三来及时有素材也是自己原创却苦于跟公司有很大关系,不知道该不该写,四来最近写的材料太多了,耗费了很大的精力。不过实话实说,还是自己偷懒。
GDP和人口数据都是一个基于时间序列和省份的大的二维表,分析的角度有多种,横向比、纵向比、切片比、看增长率、看绝对值、看相对值、看份额等等不一而足,所以体现在图表上也是各式各样,还好本文的目标只是为了论证图表可行性,并非绝对的要匹配图表的适用性。
代码示例
代码语言:javascript复制#获取列名、行名和列值,下面主要为了获取2017年各省的GDP数据
colname=[i for i in gdpdf.columns if i not in ['区域', '地区','total']][20::-1]
#colname= ['2000年', '2001年', '2002年', '2003年', '2004年', '2005年', '2006年', '2007年', '2008年', '2009年', '2010年', '2011年', '2012年', '2013年', '2014年', '2015年', '2016年', '2017年']
rowname=[i for i in gdpdf.index]
#rowname= ['北京市', '天津市', '河北省', '山西省', '内蒙古自治区', '辽宁省', '吉林省', '黑龙江省', '上海市', '江苏省', '浙江省', '安徽省', '福建省', '江西省', '山东省', '河南省', '湖北省', '湖南省', '广东省', '广西壮族自治区', '海南省', '重庆市', '四川省', '贵州省', '云南省', '西藏自治区', '陕西省', '甘肃省', '青海省', '宁夏回族自治区', '新疆维吾尔自治区']
data=gdpdf['2017年'].values
#data= [28014.94 18549.19 34016.32 15528.42 16096.21 23409.24 14944.53 15902.68
# 30632.99 85869.76 51768.26 27018. 32182.09 20006.31 72634.15 44552.83
# 35478.09 33902.96 89705.23 18523.26 4462.54 19424.73 36980.22 13540.83
# 16376.34 1310.92 21898.81 7459.9 2624.83 3443.56 10881.96]
x = np.linspace(0, 31, 31)
y=data
from matplotlib.ticker import FuncFormatter
def millions(x, pos):
'The two args are the value and tick position'
return '¥%.2f亿' % x
formatter = FuncFormatter(millions)
def draw_bar(x,y,xlabel):
# 表示先生成93(31*3)个随机数,然后将它们组装成31行,那么每行三个数,对应了颜色的三个组成部分
color = np.random.rand(93).reshape(31, 3)
figure = plt.figure(facecolor='w', figsize=(11, 7))
ax = figure.add_subplot(1, 1, 1)
matplotlib.rcParams['font.sans-serif'] = ['SimHei'] # 用黑体显示中文
matplotlib.rcParams['axes.unicode_minus'] = False # 正常显示负号
plt.bar(x, y, alpha=0.8, color=color)
ax.yaxis.set_major_formatter(formatter)
#设置x坐标轴的标签
plt.xticks(x,xlabel)
#设置x轴标签旋转
plt.xticks(rotation=90)
plt.show()
def draw_barh(x,y,xlabel):
color = np.random.rand(93).reshape(31, 3)
figure = plt.figure(facecolor='w', figsize=(11, 7))
ax = figure.add_subplot(1, 1, 1)
matplotlib.rcParams['font.sans-serif'] = ['SimHei'] # 用黑体显示中文
matplotlib.rcParams['axes.unicode_minus'] = False # 正常显示负号
plt.barh(x, y, alpha=0.8, color=color)
ax.xaxis.set_major_formatter(formatter)
plt.yticks(x,xlabel)
plt.show()
draw_bar(x,y,rowname)
draw_barh(x,y,rowname)