数据可视化库Matplotlib

例1: 折线图绘制

代码一(基本操作):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
unrate = pd.read_csv('unrate.csv')
unrate['DATE'] = pd.to_datetime(unrate['DATE']) #将日期变为标准的格式,但不写这句程序也自动处理了
print(unrate.loc[:10])

运行结果:

          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

代码二(画图):

plt.plot(unrate['DATE'].head(12),unrate['VALUE'].head(12))
plt.show()

运行结果:

![画图](https://img-blog.csdn.net/20180903094347824?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTk1ODc3OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

代码三(添加信息):

plt.plot(unrate['DATE'].head(12),unrate['VALUE'].head(12))
plt.xticks(rotation=45) #横坐标显示旋转45度
plt.xlabel('Month') #横坐标标签
plt.ylabel('Unemployment Rate') #纵坐标标签
plt.title('Monthly Unemployment Trends,1948') #表格题目
plt.show()

运行结果:

![添加信息](https://img-blog.csdn.net/20180903095120393?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTk1ODc3OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

代码四(画子图):

fig = plt.figure(figsize=(15,15)) #画图区间,figsize表示图像显示出来的大小
ax1 = fig.add_subplot(2,2,1) #第一个区域
ax2 = fig.add_subplot(2,2,2) #第二个区域
ax3 = fig.add_subplot(2,2,4) #第四个区域
ax1.plot(unrate['DATE'].loc[0:11],unrate['VALUE'].loc[0:11])
ax2.plot(unrate['DATE'].loc[12:23],unrate['VALUE'].loc[12:23])
plt.show()

运行结果:

![子图](https://img-blog.csdn.net/20180903110947248?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTk1ODc3OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

代码五(一图二线):

fig = plt.figure(figsize=(10,10))
plt.plot(unrate['DATE'][0:12].dt.month,unrate['VALUE'][0:12],c='red',label='1948') #dt.month将具体年月日表示为月份
plt.plot(unrate['DATE'][12:24].dt.month,unrate['VALUE'][12:24],c='blue',label='1949')
plt.xlabel('Month')
plt.ylabel('Unemployment Rate')
plt.title('Monthly Unemployment Trends,1948 and 1949')
plt.legend(loc='best')
plt.show()

运行结果:

![一图二线](https://img-blog.csdn.net/20180903120729399?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTk1ODc3OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

代码六(一图多线):

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)
    plt.plot(subset['DATE'].dt.month,subset['VALUE'],c=colors[i],label=label)
plt.legend(loc='best')
plt.xlabel('Month, Integer')
plt.ylabel('Unemployment Rate, Percent')
plt.title('Monthly Unemployment Trends, 1948-1952')
plt.show()

运行结果:

![一图多线](https://img-blog.csdn.net/20180903123013198?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTk1ODc3OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

例2: 条形图与散点图

代码一(条形图):

import matplotlib.pyplot as plt
import numpy as np
plt.figure(figsize=(8, 6), dpi=80) # 创建一个点数为 8 x 6 的窗口, 并设置分辨率为 80像素/每英寸
plt.subplot(1, 1, 1) # 再创建一个规格为 1 x 1 的子图
N = 6 # 柱子总数
values = (25, 32, 34, 20, 41, 50) # 包含每个柱子对应值的序列
index = np.arange(N) # 包含每个柱子下标的序列
width = 0.35 # 柱子的宽度
p2 = plt.bar(index, values, width, label="rainfall", color="#87CEFA") # bar绘制柱状图, 每根柱子的颜色为紫罗兰色
plt.xlabel('Months') # 设置横轴标签
plt.ylabel('rainfall (mm)') # 设置纵轴标签
plt.title('Monthly average rainfall') # 添加标题
plt.xticks(index, ('Jan', 'Fub', 'Mar', 'Apr', 'May', 'Jun')) # 添加纵横轴的刻度
plt.yticks(np.arange(0, 81, 10))
plt.legend(loc="upper right") # 添加图例
plt.show()

运行结果:

![柱状图](https://img-blog.csdn.net/20180903172053236?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTk1ODc3OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

详见:https://www.jianshu.com/p/3170304baf55

代码二(散点图):

import numpy as np
import matplotlib.pyplot as plt
n = 1024 # 数据个数
x = np.random.normal(0, 1, n) # 均值为0, 方差为1的随机数
y = np.random.normal(0, 1, n)
color = np.arctan2(y, x) # 计算颜色值
plt.scatter(x, y, s = 75, c = color, alpha = 0.5) # 绘制散点图
plt.xlim((-1.5, 1.5)) # 设置坐标轴范围
plt.ylim((-1.5, 1.5))
plt.show()

详见:https://blog.csdn.net/quincuntial/article/details/71090214

运行结果:

![散点图](https://img-blog.csdn.net/20180903173006962?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTk1ODc3OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

例3: 直方图与饼图

代码一(直方图):

import matplotlib.pyplot as plt
import numpy as np
import matplotlib

# 设置matplotlib正常显示中文和负号
matplotlib.rcParams['font.sans-serif']=['SimHei']   # 用黑体显示中文
matplotlib.rcParams['axes.unicode_minus']=False     # 正常显示负号
# 随机生成(10000,)服从正态分布的数据
data = np.random.randn(10000)
"""
绘制直方图
data:必选参数,绘图数据
bins:直方图的长条形数目,可选项,默认为10
normed:是否将得到的直方图向量归一化,可选项,默认为0,代表不归一化,显示频数。normed=1,表示归一化,显示频率。
facecolor:长条形的颜色
edgecolor:长条形边框的颜色
alpha:透明度
"""
plt.hist(data, bins=40, normed=0, facecolor="blue", edgecolor="black", alpha=0.7)
# 显示横轴标签
plt.xlabel("区间")
# 显示纵轴标签
plt.ylabel("频数/频率")
# 显示图标题
plt.title("频数/频率分布直方图")
plt.show()

运行结果:

![直方图](https://img-blog.csdn.net/20180905113533146?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTk1ODc3OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

详见:https://blog.csdn.net/hohaizx/article/details/79101322

代码二(饼图):

import matplotlib.pyplot as plt

labels = 'Frogs','Hogs','Dogs','Logs'
sizes = [15,30,45,10]
explode = (0,0.1,0,0) #0.1表示将Hogs那一块凸显出来
plt.pie(sizes,explode=explode,labels=labels,autopct='%1.1f%%',shadow=False,startangle=90) #startangle表示饼图的起始角度

plt.axis('equal')  #加入这行代码即可!
plt.show()

运行结果:

![饼图](https://img-blog.csdn.net/20180905113654415?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTk1ODc3OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

例4: 细节设置(略)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值