欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Matplotlib数据可视化基础学习笔记

程序员文章站 2022-03-20 23:29:33
...
import numpy as np
import matplotlib.pyplot as plt
## %matplotlib inline表示在行中显示图片,在命令行运行报错
data = np.arange(0,1.1,0.01)
plt.title('lines') ## 添加标题
plt.xlabel('x')## 添加x轴的名称
plt.ylabel('y')## 添加y轴的名称
plt.xlim((0,1))## 确定x轴范围
plt.ylim((0,1))## 确定y轴范围
plt.xticks([0,0.2,0.4,0.6,0.8,1])## 规定x轴刻度
plt.yticks([0,0.2,0.4,0.6,0.8,1])## 确定y轴刻度
plt.plot(data, data**2)## 添加y=x^2曲线
plt.plot(data, data**4)## 添加y=x^4曲线
plt.legend(['y=x^2','y=x^4'])
plt.savefig('C:/python学习/y=x^2.png')
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q8oOHYtu-1603987563962)(output_1_0.png)]

import numpy as np
import matplotlib.pyplot as plt
data = np.arange(0,1.1,0.01)
plt.title('lines') 
plt.xlabel('x')
plt.ylabel('y')
plt.xlim((0,1))
plt.ylim((0,1))
plt.xticks([0,0.2,0.4,0.6,0.8,1])
plt.yticks([0,0.2,0.4,0.6,0.8,1])
plt.plot(data, data**2)#暂时不用掌握这里
plt.plot(data, data**4)
plt.legend(['y=x^2','y=x^4'])
plt.savefig('C:/python学习/y=x^2.png')
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Js4nGPyG-1603987563964)(output_2_0.png)]


import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False ## 设置正常显示符号
plt.title('夜空中最亮的欣')
a = 1
t = np.linspace(0 , 2 * np.pi, 1024)
X = a*(2*np.cos(t)-np.cos(2*t))
Y = a*(2*np.sin(t)-np.sin(2*t))
plt.plot(Y, X,color='r')
plt.show()
 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ShhjYlv6-1603987563965)(output_3_0.png)]

rad = np.arange(0,np.pi*2,0.01)
##第一幅子图
p1 = plt.figure(figsize=(8,6),dpi=80)## 确定画布大小
ax1 = p1.add_subplot(2,1,1)## 创建一个两行1列的子图,并开始绘制第一幅
plt.title('lines')## 添加标题
plt.xlabel('x')## 添加x轴的名称
plt.ylabel('y')## 添加y轴的名称
plt.xlim((0,1))## 确定x轴范围
plt.ylim((0,1))## 确定y轴范围
plt.xticks([0,0.2,0.4,0.6,0.8,1])## 规定x轴刻度
plt.yticks([0,0.2,0.4,0.6,0.8,1])## 确定y轴刻度
plt.plot(rad,rad**2)## 添加y=x^2曲线
plt.plot(rad,rad**4)## 添加y=x^4曲线
plt.legend(['y=x^2','y=x^4'])

##第二幅子图
ax2 = p1.add_subplot(2,1,2)## 创开始绘制第2幅
plt.title('sin/cos') ## 添加标题
plt.xlabel('rad')## 添加x轴的名称
plt.ylabel('value')## 添加y轴的名称
plt.xlim((0,np.pi*2))## 确定x轴范围
plt.ylim((-1,1))## 确定y轴范围
plt.xticks([0,np.pi/2,np.pi,np.pi*1.5,np.pi*2])## 规定x轴刻度
plt.yticks([-1,-0.5,0,0.5,1])## 确定y轴刻度
plt.plot(rad,np.sin(rad))## 添加sin曲线
plt.plot(rad,np.cos(rad))## 添加cos曲线
plt.legend(['sin','cos'])
plt.savefig('C:/python学习/sincos.png')
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b0rIbjGQ-1603987563967)(output_4_0.png)]

rad = np.arange(0,np.pi*2,0.01)
np.pi
3.141592653589793

fig = plt.figure(figsize=(a, b), dpi=dpi)

  • figsize 设置图形的大小,a 为图形的宽, b 为图形的高,单位为英寸
  • dpi 为设置图形每英寸的点数
## 原图
x = np.linspace(0, 4*np.pi)## 生成x轴数据
y = np.sin(x)## 生成y轴数据
plt.plot(x,y,label="$sin(x)$")## 绘制sin曲线图
plt.title('sin')
plt.savefig('C:/python学习/默认sin曲线.png')
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e5jD0fWs-1603987563967)(output_8_0.png)]

np.arange与np.linspace

  • 当使用非整数步骤(如0.1)时,结果往往不一致。对于这些情况,最好使用‘linspace’。
## 修改rc参数后的图
plt.rcParams['lines.linestyle'] = '-.'#线条样式
plt.rcParams['lines.linewidth'] = 3 # 线条宽度
plt.rcParams['lines.marker'] = "*" #线条上点的形状
plt.rcParams['lines.markersize'] = 5 #点的大小
plt.plot(x,y,label="$sin(x)$")## 绘制三角函数
plt.title('sin')
plt.savefig('C:/python学习/修改rc参数后sin曲线.png')
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xqb86lpT-1603987563968)(output_10_0.png)]

## 无法显示中文标题
plt.plot(x,y,label="$sin(x)$")## 绘制三角函数
plt.title('sin曲线')
plt.savefig('C:/python学习/无法显示中文标题sin曲线.png')
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-spKvIasa-1603987563969)(output_11_0.png)]

##设置rc参数显示中文标题
## 设置字体为SimHei显示中文
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False ## 设置正常显示符号
plt.plot(x,y,label="$sin(x)$")## 绘制三角函数
plt.title('sin曲线')
plt.savefig('C:/python学习/显示中文标题sin曲线.png')
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PuJqBED1-1603987563969)(output_12_0.png)]

plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False ## 这两行用来设置中文标题

分析特征间的关系

绘制散点图

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei' ## 设置中文显示
plt.rcParams['axes.unicode_minus'] = False
data = np.load('C:\python学习\Python数据分析与应用\数据\国民经济核算季度数据.npz',allow_pickle=True)
print(data.files)  # 查看数据文件包含的名称
name = data['columns'] ## 提取其中的columns数组,视为数据的标签
values = data['values']## 提取其中的values数组,数据的存在位置

plt.figure(figsize=(8,7))## 设置画布
plt.scatter(values[:,0],values[:,2], marker='o')## 绘制散点图
plt.xlabel('年份')## 添加横轴标签
plt.ylabel('生产总值(亿元)')## 添加y轴名称
plt.xticks(range(0,70,4), values[range(0,70,4),1], rotation=45)  # 只有第一季度的数据
plt.title('2000-2017年季度生产总值散点图')## 添加图表标题
plt.savefig('C:/python学习/2000-2017年季度生产总值散点图.png')
plt.show()
['columns', 'values']

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ja44187a-1603987563969)(output_16_1.png)]

当出现这个错误Object arrays cannot be loaded when allow_pickle=False

  • 解决:将np.load(path) 改为np.load(path, allow_pickle=True)
print(data.files)
['columns', 'values']
# 说明
a = np.ones((3, 3))
b = np.zeros((4, 4))
np.savez('C:/python学习/my_data', ones=a, zeros=b)
da = np.load('C:/python学习/my_data.npz')
da.files
['ones', 'zeros']
plt.figure(figsize=(8,7))## 设置画布
## 绘制散点1
plt.scatter(values[:,0],values[:,3], marker='o',c='red')
## 绘制散点2
plt.scatter(values[:,0],values[:,4], marker='D',c='blue')
## 绘制散点3
plt.scatter(values[:,0],values[:,5], marker='v',c='yellow')
plt.xlabel('年份')## 添加横轴标签
plt.ylabel('生产总值(亿元)')## 添加纵轴标签
plt.xticks(range(0,70,4), values[range(0,70,4),1],rotation=45)
plt.title('2000-2017年各产业季度生产总值散点图')## 添加图表标题
plt.legend(['第一产业','第二产业','第三产业'])## 添加图例
plt.savefig('C:/python学习/2000-2017年各产业季度生产总值散点图.png')
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9bumkIUN-1603987563969)(output_21_0.png)]

plt.figure(figsize=(8,7))## 设置画布
## 绘制折线图
plt.plot(values[:,0],values[:,2],color = 'b',linestyle = '--')
plt.xlabel('年份')## 添加横轴标签
plt.ylabel('生产总值(亿元)')## 添加y轴名称
plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)
plt.title('2000-2017年季度生产总值折线图')## 添加图表标题
plt.savefig('C:/python学习/2000-2017年季度生产总值折线图.png')
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fr31C2Tn-1603987563970)(output_22_0.png)]

plt.figure(figsize=(8,7))## 设置画布
plt.plot(values[:,0],values[:,2],color = 'g',linestyle = '--',
        marker = 'o')## 绘制折线图
plt.xlabel('年份')## 添加横轴标签
plt.ylabel('生产总值(亿元)')## 添加y轴名称
plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)
plt.title('2000-2017年季度生产总值点线图')## 添加图表标题
plt.savefig('C:/python学习/2000-2017年季度生产总值点线图.png')
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0bWngdj3-1603987563970)(output_23_0.png)]

plt.figure(figsize=(8,7))## 设置画布
plt.plot(values[:,0],values[:,3],'bs-',
       values[:,0],values[:,4],'ro-.',
       values[:,0],values[:,5],'gH--')## 绘制折线图
plt.xlabel('年份')## 添加横轴标签
plt.ylabel('生产总值(亿元)')## 添加y轴名称
plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)
plt.title('2000-2017年各产业季度生产总值折线图')## 添加图表标题
plt.legend(['第一产业','第二产业','第三产业'])
plt.savefig('C:/python学习/2000-2017年季度各产业生产总值折线图.png')
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6wAj2IWB-1603987563972)(output_24_0.png)]

任务实现

  • 绘制2000-2017各产业与行业的国民生产总值散点图
  • 绘制2000-2017各产业与行业的国民生产总值折线图
plt.rcParams['font.sans-serif'] = 'SimHei' ## 设置中文显示
plt.rcParams['axes.unicode_minus'] = False
data = np.load('C:/python学习/Python数据分析与应用/数据/国民经济核算季度数据.npz',allow_pickle=True)
name = data['columns']## 提取其中的columns数组,视为数据的标签
values = data['values']## 提取其中的values数组,数据的存在位置
p = plt.figure(figsize=(12,12)) ##设置画布

## 子图1
ax1 = p.add_subplot(2,1,1)
plt.scatter(values[:,0],values[:,3], marker='o',c='r')## 绘制散点
plt.scatter(values[:,0],values[:,4], marker='D',c='b')## 绘制散点
plt.scatter(values[:,0],values[:,5], marker='v',c='y')## 绘制散点
plt.ylabel('生产总值(亿元)')## 添加纵轴标签
plt.title('2000-2017年各产业季度生产总值散点图')## 添加图表标题
plt.legend(['第一产业','第二产业','第三产业'])## 添加图例

## 子图2
ax2 = p.add_subplot(2,1,2)
plt.scatter(values[:,0],values[:,6], marker='o',c='r')## 绘制散点
plt.scatter(values[:,0],values[:,7], marker='D',c='b')## 绘制散点
plt.scatter(values[:,0],values[:,8], marker='v',c='y')## 绘制散点
plt.scatter(values[:,0],values[:,9], marker='8',c='g')## 绘制散点
plt.scatter(values[:,0],values[:,10], marker='p',c='c')## 绘制散点
plt.scatter(values[:,0],values[:,11], marker='+',c='m')## 绘制散点
plt.scatter(values[:,0],values[:,12], marker='s',c='k')## 绘制散点
## 绘制散点
plt.scatter(values[:,0],values[:,13], marker='*',c='purple')
## 绘制散点
plt.scatter(values[:,0],values[:,14], marker='d',c='brown')
plt.legend(['农业','工业','建筑','批发','交通', '餐饮','金融','房地产','其他']) 
plt.xlabel('年份')## 添加横轴标签
plt.ylabel('生产总值(亿元)')## 添加纵轴标签
plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)
plt.savefig('C:/python学习/2000-2017年季度各行业生产总值散点子图.png')
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HMitxWLd-1603987563972)(output_26_0.png)]

pic1 = plt.figure(dpi=100, figsize=(15, 15)) #这个图有点难,先不学
labs = name[6:]
my_title = ['第一季度','第二季度','第三季度','第四季度']
for j in range(4):
    pic1.add_subplot(2, 2, j+1)
    temp1 = values[j::4, 6:]
    for i in range(len(temp1[0])):
        plt.scatter(range(len(temp1)), temp1[:, i], label=labs[i][:2])
    plt.legend()
    plt.ylabel('增加值(亿元)')
    plt.xticks(range(len(temp1)), values[j::4, 1], rotation=45)
    plt.title(my_title[j])

plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MKopjnIF-1603987563973)(output_27_0.png)]

p1 = plt.figure(figsize=(8,7))## 设置画布
## 子图1
ax3 = p1.add_subplot(2,1,1)
plt.plot(values[:,0],values[:,3],'b-',
        values[:,0],values[:,4],'r-.',
        values[:,0],values[:,5],'g--')## 绘制折线图
plt.ylabel('生产总值(亿元)')## 添加纵轴标签
plt.title('2000-2017年各产业季度生产总值折线图')## 添加图表标题
plt.legend(['第一产业','第二产业','第三产业'])## 添加图例
## 子图2
ax4 = p1.add_subplot(2,1,2)
plt.plot(values[:,0],values[:,6], 'r-',## 绘制折线图
        values[:,0],values[:,7], 'b-.',## 绘制折线图
        values[:,0],values[:,8],'y--',## 绘制折线图
        values[:,0],values[:,9], 'g:',## 绘制折线图
        values[:,0],values[:,10], 'c-',## 绘制折线图
        values[:,0],values[:,11], 'm-.',## 绘制折线图
        values[:,0],values[:,12], 'k--',## 绘制折线图
        values[:,0],values[:,13], 'r:',## 绘制折线图
        values[:,0],values[:,14], 'b-')## 绘制折线图
plt.legend(['农业','工业','建筑','批发','交通',
        '餐饮','金融','房地产','其他'])
plt.xlabel('年份')## 添加横轴标签
plt.ylabel('生产总值(亿元)')## 添加纵轴标签
plt.xticks(range(0,70,4), values[range(0,70,4),1], rotation=45)
plt.savefig('C:/python学习/2000-2017年季度各行业生产总值折线子图.png')
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-803l1GN2-1603987563973)(output_28_0.png)]

pic1 = plt.figure(dpi=100, figsize=(15, 15)) #跟前面的循环语句作图差不多,先不学
labs = name[6:]
my_title = ['第一季度','第二季度','第三季度','第四季度']
for j in range(4):
    pic1.add_subplot(2, 2, j+1)
    temp1 = values[j::4, 6:]
    for i in range(len(temp1[0])):
        plt.plot(range(len(temp1)), temp1[:, i], label=labs[i][:2])
    plt.legend()
    plt.ylabel('增加值(亿元)')
    plt.xticks(range(len(temp1)), values[j::4, 1], rotation=45)
    plt.title(my_title[j])

plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UdVOJkZV-1603987563975)(output_29_0.png)]

分析特征内部数据分布与分散状况

绘制直方图

plt.rcParams['font.sans-serif'] = 'SimHei'## 设置中文显示
plt.rcParams['axes.unicode_minus'] = False
data = np.load('C:/python学习/Python数据分析与应用/数据/国民经济核算季度数据.npz',allow_pickle=True)
name = data['columns']## 提取其中的columns数组,视为数据的标签
values = data['values']## 提取其中的values数组,数据的存在位置
label = ['第一产业','第二产业','第三产业']## 刻度标签
plt.figure(figsize=(6,5))## 设置画布
my_height = values[-1,3:6]
plt.bar(range(3), my_height, width = 0.5)## 绘制直方图
plt.xlabel('产业')## 添加横轴标签
plt.ylabel('生产总值(亿元)')## 添加y轴名称
plt.xticks(range(3), label)
plt.title('2017年第一季度各产业国民生产总值直方图')## 添加图表标题

for i in range(len(my_height)):
    plt.text(i, my_height[i], my_height[i], va='bottom', ha='center')
    
plt.savefig('C:/python学习/2017年第一季度各产业国民生产总值直方图.png')
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6x47UbkN-1603987563975)(output_32_0.png)]

plt.figure(figsize=(6,6))## 将画布设定为正方形,则绘制的饼图是正圆
label= ['第一产业','第二产业','第三产业']## 定义饼状图的标签,标签是列表
explode = [0.01, 0.01, 0.01]## 设定各项离心n个半径
plt.pie(values[-1,3:6], explode=explode, labels=label, autopct='%1.1f%%')## 绘制饼图
plt.title('2017年第一季度各产业国民生产总值饼图')
plt.savefig('C:/python学习/2017年第一季度各产业生产总值占比饼图')
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ooIkuCcr-1603987563975)(output_33_0.png)]

label= ['第一产业','第二产业','第三产业']## 定义标签
gdp = (list(values[:,3]),list(values[:,4]),list(values[:,5]))
plt.figure(figsize=(6,4))
plt.boxplot(gdp,notch=True,labels = label, meanline=True)
plt.title('2000-2017各产业国民生产总值箱线图')
plt.savefig('C:/python学习/2000-2017各产业国民生产总值箱线图.png')
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-21BlnmDn-1603987563976)(output_34_0.png)]

iris = np.loadtxt('C:/python学习/Python数据分析与应用/数据/iris_sepal_length.csv', delimiter=',')
tem = plt.boxplot(iris)
plt.show()
print(tem.items())
print(tem['medians'][0].get_ydata())
print(tem['medians'][0].get_xdata())
print('\n',tem['boxes'][0].get_ydata())
print(tem['boxes'][0].get_xdata())
print('\n',tem['caps'][0].get_ydata())
print(tem['caps'][0].get_xdata())
print('\n',tem['caps'][1].get_ydata())
print(tem['caps'][1].get_xdata())
print('\n',tem['whiskers'][0].get_ydata())
print(tem['whiskers'][0].get_xdata())

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WZPoXQUl-1603987563976)(output_35_0.png)]

dict_items([('whiskers', [<matplotlib.lines.Line2D object at 0x00000201093ABF70>, <matplotlib.lines.Line2D object at 0x000002010932DC70>]), ('caps', [<matplotlib.lines.Line2D object at 0x000002010932D340>, <matplotlib.lines.Line2D object at 0x000002010932D3D0>]), ('boxes', [<matplotlib.lines.Line2D object at 0x00000201093ABA60>]), ('medians', [<matplotlib.lines.Line2D object at 0x000002010932D970>]), ('fliers', [<matplotlib.lines.Line2D object at 0x000002010A5F8310>]), ('means', [])])
[5.8 5.8]
[0.925 1.075]

 [5.1 5.1 6.4 6.4 5.1]
[0.925 1.075 1.075 0.925 0.925]

 [4.3 4.3]
[0.9625 1.0375]

 [7.9 7.9]
[0.9625 1.0375]

 [5.1 4.3]
[1. 1.]

任务实现

  • 绘制国民生产总值构成分布直方图
  • 绘制国民生产总值构成分布饼图
  • 绘制国民生产总值分散情况箱线图
import numpy as np
import matplotlib.pyplot as plt
data = np.load('C:/python学习/Python数据分析与应用/数据/国民经济核算季度数据.npz',allow_pickle=True)
name = data['columns'] ## 提取其中的columns数组,视为数据的标签
values = data['values']## 提取其中的values数组,数据的存在位置
plt.rcParams['font.sans-serif'] = 'SimHei' ## 设置中文显示
plt.rcParams['axes.unicode_minus'] = False
label1 = ['第一产业','第二产业','第三产业']## 刻度标签1
label2 = ['农业','工业','建筑','批发','交通','餐饮','金融','房地产','其他']## 刻度标签2
p = plt.figure(figsize=(12,12))

## 子图1
ax1 = p.add_subplot(2,2,1)
plt.bar(range(3),values[0,3:6],width = 0.5)## 绘制直方图
plt.xlabel('产业')## 添加横轴标签
plt.ylabel('生产总值(亿元)')## 添加y轴名称
plt.xticks(range(3),label1)
plt.title('2000年第一季度国民生产总值产业构成分布直方图') 

## 子图2
ax2 = p.add_subplot(2,2,2)
plt.bar(range(3),values[-1,3:6],width = 0.5)## 绘制直方图
plt.xlabel('产业')## 添加横轴标签
plt.ylabel('生产总值(亿元)')## 添加y轴名称
plt.xticks(range(3),label1)
plt.title('2017年第一季度国民生产总值产业构成分布直方图') 

## 子图3
ax3 = p.add_subplot(2,2,3)
plt.bar(range(9),values[0,6:],width = 0.5)## 绘制直方图
plt.xlabel('行业')## 添加横轴标签
plt.ylabel('生产总值(亿元)')## 添加y轴名称
plt.xticks(range(9),label2)
plt.title('2000年第一季度国民生产总值行业构成分布直方图')## 添加图表标题

## 子图4
ax4 = p.add_subplot(2,2,4)
plt.bar(range(9),values[-1,6:],width = 0.5)## 绘制直方图
plt.xlabel('行业')## 添加横轴标签
plt.ylabel('生产总值(亿元)')## 添加y轴名称
plt.xticks(range(9),label2)
plt.title('2017年第一季度国民生产总值行业构成分布直方图')## 添加图表标题

## 保存并显示图形
plt.savefig('C:/python学习/国民生产总值构成分布直方图.png')
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nzRO4c0l-1603987563977)(output_37_0.png)]

label1 = ['第一产业','第二产业','第三产业']## 标签1
label2 = ['农业','工业','建筑','批发','交通',
        '餐饮','金融','房地产','其他']## 标签2
explode1 = [0.01,0.01,0.01]
explode2 = [0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01]
p = plt.figure(figsize=(12,12))

## 子图1
ax1 = p.add_subplot(2,2,1)
plt.pie(values[0,3:6],explode=explode1,labels=label1,
        autopct='%1.1f%%')## 绘制散点图
plt.title('2000年第一季度国民生产总值产业构成分布饼图') 

## 子图2
ax2 = p.add_subplot(2,2,2)
plt.pie(values[-1,3:6],explode=explode1,labels=label1,
        autopct='%1.1f%%')## 绘制散点图
plt.title('2017年第一季度国民生产总值产业构成分布饼图') 

## 子图3
ax3 = p.add_subplot(2,2,3)
plt.pie(values[0,6:],explode=explode2,labels=label2,
        autopct='%1.1f%%')## 绘制散点图
plt.title('2000年第一季度国民生产总值行业构成分布饼图')## 添加图表标题

## 子图4
ax4 = p.add_subplot(2,2,4)
plt.pie(values[-1,6:],explode=explode2,labels=label2,
        autopct='%1.1f%%')## 绘制散点图
plt.title('2017年第一季度国民生产总值行业构成分布饼图')## 添加图表标题

## 保存并显示图形
plt.savefig('C:/python学习/国民生产总值构成分布饼图.png')
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4mTRjsED-1603987563977)(output_38_0.png)]

label1 = ['第一产业','第二产业','第三产业']## 标签1
label2 = ['农业','工业','建筑','批发','交通',
        '餐饮','金融','房地产','其他']## 标签2
gdp1 = (list(values[:,3]),list(values[:,4]),list(values[:,5]))
gdp2 = ([list(values[:,i]) for i in range(6,15)])
p = plt.figure(figsize=(8,8))

## 子图1
ax1 = p.add_subplot(2,1,1)
## 绘制箱线图
plt.boxplot(gdp,notch=True,labels = label1, meanline=True)
plt.title('2000-2017各产业国民生产总值箱线图')
plt.ylabel('生产总值(亿元)')## 添加y轴名称

## 子图2
ax2 = p.add_subplot(2,1,2)
## 绘制箱线图
plt.boxplot(gdp2,notch=True,labels = label2, meanline=True)
plt.title('2000-2017各行业国民生产总值箱线图')
plt.xlabel('行业')## 添加横轴标签
plt.ylabel('生产总值(亿元)')## 添加y轴名称

## 保存并显示图形
plt.savefig('C:/python学习/国民生产总值分散情况箱线图.png')
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YiptpbCB-1603987563978)(output_39_0.png)]

p2 = plt.figure(dpi=100, figsize=(8, 8))
a_labs = [i[:4] for i in name[3: 6]]
b_labs = [i[:2] for i in name[6:]]

p2.add_subplot(2, 2, 1)
plt.bar(range(3), values[0, 3: 6])
plt.xticks(range(3), a_labs)
plt.title('2000年第一季度')

p2.add_subplot(2, 2, 2)
plt.bar(range(3), values[-1, 3: 6])
plt.xticks(range(3), a_labs)
plt.title('2017年第一季度')

p2.add_subplot(2, 2, 3)
y3 = values[0, 6:]
plt.bar(range(len(y3)), y3)
plt.xticks(range(len(y3)), b_labs)
plt.title('2000年第一季度')

p2.add_subplot(2, 2, 4)
y3 = values[-1, 6:]
plt.bar(range(len(y3)), y3)
plt.xticks(range(len(y3)), b_labs)
plt.title('2017年第一季度')

plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EESQX57k-1603987563978)(output_40_0.png)]

p2 = plt.figure(dpi=100, figsize=(6, 6))
a_labs = [i[:4] for i in name[3: 6]]
b_labs = [i[:2] for i in name[6:]]

p2.add_subplot(2, 2, 1)
plt.pie(values[0, 3: 6], labels=a_labs, autopct='%1.1f%%')
plt.title('2000年第一季度')

p2.add_subplot(2, 2, 2)
plt.pie(values[-1, 3: 6], labels=a_labs, autopct='%1.1f%%')
plt.title('2017年第一季度')

p2.add_subplot(2, 2, 3)
y3 = values[0, 6:]
plt.pie(y3, labels=b_labs, autopct='%1.1f%%')
plt.title('2000年第一季度')

p2.add_subplot(2, 2, 4)
y3 = values[-1, 6:]
plt.pie(y3, labels=b_labs, autopct='%1.1f%%')
plt.title('2017年第一季度')

plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HLT4Oyjr-1603987563979)(output_41_0.png)]

p2 = plt.figure(dpi=100, figsize=(8, 8))

p2.add_subplot(2, 1, 1)
plt.boxplot([list(values[:, 4]), list(values[:, 5]), list(values[:, 6])])
plt.xticks(range(1, 4), a_labs)

p2.add_subplot(2, 1, 2)
tem = []
for i in range(6, len(values[0])):
    tem.append(list(values[:, i]))
plt.boxplot(tem)
plt.xticks(range(1, len(b_labs)+1), b_labs)
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yvnSeDKH-1603987563979)(output_42_0.png)]

import numpy as np

print(data['columns'])
['序号' '时间' '国内生产总值_当季值(亿元)' '第一产业增加值_当季值(亿元)' '第二产业增加值_当季值(亿元)'
 '第三产业增加值_当季值(亿元)' '农林牧渔业增加值_当季值(亿元)' '工业增加值_当季值(亿元)' '建筑业增加值_当季值(亿元)'
 '批发和零售业增加值_当季值(亿元)' '交通运输、仓储和邮政业增加值_当季值(亿元)' '住宿和餐饮业增加值_当季值(亿元)'
 '金融业增加值_当季值(亿元)' '房地产业增加值_当季值(亿元)' '其他行业增加值_当季值(亿元)']
print(data['values'])
[[1 '2000年第一季度' 21329.9 ... 1235.9 933.7 3586.1]
 [2 '2000年第二季度' 24043.4 ... 1124.0 904.7 3464.9]
 [3 '2000年第三季度' 25712.5 ... 1170.4 1070.9 3518.2]
 ...
 [67 '2016年第三季度' 190529.5 ... 15472.5 12164.1 37964.1]
 [68 '2016年第四季度' 211281.3 ... 15548.7 13214.9 39848.4]
 [69 '2017年第一季度' 180682.7 ... 17213.5 12393.4 42443.1]]