#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2018/8/10 16:14
# @Author : limingyu
# @Site :
# @File : Test_Matplotlib.py
# @Software: PyCharm
#数据是:1948年到2016年8月每月的失业率
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
unrate = pd.read_csv("UNRATE.csv")
#将DATA(1948/1/1)类型数据转为datetime类型(1948-01-01)
unrate['DATE'] = pd.to_datetime(unrate['DATE'])
print(unrate.head(12)) #输出1948年一年的数据
# DATE VALUE
#0 1948-01-01 3.4
#1 1948-02-01 3.8
#2 1948-03-01 4.0
#3 1948-04-01 3.9
#4 1948-05-01 3.5
#5 1948-06-01 3.6
#6 1948-07-01 3.6
#7 1948-08-01 3.9
#8 1948-09-01 3.8
#9 1948-10-01 3.7
#10 1948-11-01 3.8
#11 1948-12-01 4.0
#画图一空白图(只有坐标)
plt.plot() #没有参数表示什么都没画
plt.show() #显示空白图
#画图二一块画布(默认大小)
plt.figure() #没有参数表示什么都没画
plt.show() #显示空
#画图三一块画布(指定大小(长宽))
fig = plt.figure(figsize=(6,3))
plt.show() #显示空白图
#画图四
first_twelve = unrate[0:12] #取前十二行
#传入横坐标,纵坐标
plt.plot(first_twelve['DATE'],first_twelve['VALUE'])
plt.show() #显示图像
#画图五--横轴斜着显示
#xticks和yticks()人为设置坐标轴的刻度显示的值或旋转。
plt.plot(first_twelve['DATE'],first_twelve['VALUE'])
plt.xticks(rotation=45) #横轴旋转45度,斜着显示
plt.show()
#画图六--横轴纵着显示
plt.plot(first_twelve['DATE'],first_twelve['VALUE'])
plt.xticks(rotation=90) #横轴旋转90度,纵着显示
plt.show()
#画图七--横轴纵着显示
plt.plot(first_twelve['DATE'],first_twelve['VALUE'])
plt.xlabel('Month') #横轴标签
plt.ylabel('Unemployment Rate') #纵轴标签
plt.title('Monthly Unemployment Trends,1948') #图像名字
plt.show()
#画图八--添加子图
fig = plt.figure() #得到默认画图的区间
#在当前2*2区间上,第三个参数是所在位置
ax1 = fig.add_subplot(2,2,1) #ax1代表2*2区间第一个子图
ax2 = fig.add_subplot(2,2,2) #ax2代表2*2区间第二个子图
ax3 = fig.add_subplot(2,2,4) #ax3代表2*2区间第四个子图
plt.show()
#画图九--添加子图
#figsize:指定画图区域大小(区域的长度宽度)
fig = plt.figure(figsize=(3,3))
ax1 = fig.add_subplot(2,2,1) #添加子图
ax2 = fig.add_subplot(2,2,2) #添加子图
ax1.plot(np.random.randint(1,5,5),np.arange(5)) #在子图上画图
ax2.plot(np.arange(10)*3,np.arange(10)) #在子图上画图
plt.show()
#画图十--同一个画布画两条线
unrate['MONTH'] = unrate['DATE'].dt.month
fig = plt.figure(figsize=(6,3))
plt.plot(unrate[0:12]["MONTH"],unrate[0:12]["VALUE"],c='red')
plt.plot(unrate[12:24]["MONTH"],unrate[12:24]["VALUE"],c='blue')
plt.show()
#画图十一--同一个画布画多条线
fig = plt.figure(figsize=(10,6))
colors = ['red','blue','green','orange','black']
for i in range(5):
start_index = i*12
end_index = (i+1)*12
subset = unrate[start_index:end_index]
plt.plot(subset["MONTH"],subset["VALUE"],c=colors[i])
plt.show()
#画图十二--标识每条线表示的含义
fig = plt.figure(figsize=(10,6))
colors = ['red','blue','green','orange','black']
for i in range(5):
start_index = i*12
end_index = (i+1)*12
subset = unrate[start_index:end_index]
label = str(1948+i)
#加上label表示每条线代表的含义,不写的话都显示VALUE
plt.plot(subset["MONTH"],subset["VALUE"],c=colors[i],label=label)
#显示出标识并确定所在位置
plt.legend(loc='best')
print(help(plt.legend))
plt.show()
#画图十三--完整的入门画图
fig = plt.figure(figsize=(10,6))
colors = ['red','blue','green','orange','black']
for i in range(5):
start_index = i*12
end_index = (i+1)*12
subset = unrate[start_index:end_index]
label = str(1948+i)
#加上label表示每条线代表的含义,不写的话都显示VALUE
plt.plot(subset["MONTH"],subset["VALUE"],c=colors[i],label=label)
#显示出标识并确定所在位置
plt.legend(loc='best')
plt.xlabel('Month,Integer')
plt.ylabel('Unemplyment Rate, Percent')
plt.title('Monthly Unemployment Trend,1948-1952')
plt.show()