Python数据可视化

绘制图表

使用matplotlib绘制图表

matplotlib仅需开发人员编写几行代码即可绘制一个图表。下面结合面向对象的方式使用matplotlib库绘制一个简单的图表,示例代码如下:

导入模块

import numpy as np
import matplotlib.pyplot as plt

准备数据

data = np.array([1,2,3,4,5)]

创建代表画布的Figure类的对象fig

fig = plt.figure()

在画布fig上添加坐标系风格的绘画区域ax

ax = fig.add_subplot(111)

绘制图表

ax.plot(data)

展示图表

plt.show()

绘制折线图

使用plot()绘制折线图

使用pyplot的plot()函数可以快速绘制折线图。plot()函数的语法格式如下所示:

plot(x,y,fmt,scalex=True, scaley=True,data=None,*args,**kwargs)

该函数常用参数的含义如下:

x:   表示x轴的数据

y:表示y轴的数据

fmt:表示快速设置线条样式的格式字符串

label:表示应用于图例的标签文本

plot()函数会返回一个Line2D类对象(代表线条)的列表

使用pyplot的plot()函数还可以绘制具有多个线条的折线图,可以通过以下任意一种方式均可以完成

(1) 多次调用plot()函数来绘制具有多个线条的折线图,示例代码如下:

plt.plot(x1,y1)
plt.plot(x2,y2)

(2)调用plot()函数时传入一个二维数组来绘制具有多个线条的折线图。例如,将二维数组arr的第一行数据作为x轴的数据,其他行数据作为y轴的数据,代码示例如下:

arr = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
plt.plot(arr[0],arr[1:])

(3)调用plot()函数时传入数组来绘制具有多个线条的折线图,示例代码如下:

plt.plot(x1,y1,x2,y2)

实例:用面向对象绘制未来15天最高气温和最低气温的图表

import matplotlib.pyplot as plt  #导入模块
import numpy as np
x = np.arange(4,19)                                              #准备数据
y_max = np.array([32,33,34,34,33,31,30,29,30,29,26,23,21,25,31])
y_min = np.array([19,19,20,22,22,21,22,16,18,18,17,14,15,16,16])
fig= plt.figure()  #创建代表画布的Figure类的对象fig
ax = fig.add_subplot()    #在画布fig上添加坐标系风格的绘画区域ax
ax.plot(x,y_max)
ax.plot(x,y_min)     #绘制图表
plt.show()     #展示图表

运行程序,效果如图所示

现在我们添加平均气温的图表,并把它设置为红色且为虚线的样式,具体使用的方法可以在matplotlib官网查询

import matplotlib.pyplot as plt   #导入模块
import numpy as np               
x = np.arange(4,19)                                             #准备数据
y_max = np.array([32,33,34,34,33,31,30,29,30,29,26,23,21,25,31])
y_min = np.array([19,19,20,22,22,21,22,16,18,18,17,14,15,16,16])
y_mid = (y_max+y_min)/2.0
fig= plt.figure()             #创建代表画布的Figure类的对象
ax = fig.add_subplot()        #在画布上添加坐标系风格的绘画区域ax
ax.plot(x,y_max)              #绘制图表
ax.plot(x,y_min)
ax.plot(x,y_mid,'r--')
plt.show()                    #展示图表

绘制柱形图或者堆积图

使用bar()绘制柱形图或者堆积柱形图

bar()函数常用参数含义如下:

x:表示柱形的x坐标值。

heigh:表示柱形的高度。

width:表示柱形的宽度,默认为0.8。.

bottom:表示柱形底部的y坐标值,默认为0。align:表示柱形的对齐方式。

tick_ label: 表示柱形对应的刻度标签。

xerr, yerr: 若未设为None,则需要为柱形图添加水平/垂直误差棒。

error_ kw:表示误差棒的属性字典,字典的键对于errorbar()函数的关键字参数。

下面用bar()函数绘制柱形图,代码如下:

mport numpy as np
import matplotlib.pyplot as plt            #导入模块
x = np.arange(5)                           #设置x轴的坐标值
y1 = np.array([10, 8, 7, 11, 13])          #添加数据
fig = plt.figure()                         #创建类
ax = fig.add_subplot(111)                  #在画布fig上添加坐标系风格的绘图区域ax
bar_width = 0.3                            #柱形的高度
ax.bar(x, y1, tick_label = ['a', 'b', 'c', 'd', 'e'], width = bar_width)    #绘制柱形图
plt.show()                                 #展示柱形图

例如,使用bar()函数绘制柱形图,代码如下

import numpy as np               #导入模块
import matplotlib.pyplot as plt    
x = np.arange(5)                 #准备数据
y1 = np.array ([10,8,7,11,13)]
bar_width =0.3                   #设置柱形宽度
fig= plt.figure()                #创建代表画布的Figure类的对象fig
ax = fig.add_subplot()           #在画布fig上添加坐标系风格的绘图区域ax
ax.plot(x,y1,tick_label=['a','b','c','d','e'],width=bar_width)  
                                 #绘制图表,tick_label代表柱形对应的刻度标签
plt.show()                       #展示图表

使用pyplot的bar()函数还可以绘制具有多组柱形的柱形图。例如,使用bar()函数绘制一个具有俩组柱形的柱形图,代码如下。

import numpy as np               #导入模块
import matplotlib.pyplot as plt    
x = np.arange(5)                 #准备数据
y1 = np.array ([10,8,7,11,13])
y2 = np.array ([9,6,5,10,12])
bar_width =0.3                   #设置柱形宽度
fig= plt.figure()                #创建代表画布的Figure类的对象fig
ax = fig.add_subplot()           #在画布fig上添加坐标系风格的绘图区域ax
ax.plot(x,y1,tick_label=['a','b','c','d','e'],width=bar_width) 
ax.bar(x+bar_width,y2,width=bar_width)            #绘制图表,tick_label代表柱形对应的刻度标签
plt.show()                       #展示图表

使用bar()函数将后绘制的柱形位于先绘制的柱形的上方,由bar()函数绘制由俩组柱形堆叠而成的堆叠柱形图,代码如下

import numpy as np               #导入模块
import matplotlib.pyplot as plt    
x = np.arange(5)                 #准备数据
y1 = np.array ([10,8,7,11,13])
y2 = np.array ([9,6,5,10,12])
bar_width =0.3                   #设置柱形宽度
fig= plt.figure()                #创建代表画布的Figure类的对象fig
ax = fig.add_subplot()           #在画布fig上添加坐标系风格的绘图区域ax
ax.plot(x,y1,tick_label=['a','b','c','d','e'],width=bar_width) 
ax.bar(x,y2,bottom=y1,width=bar_width)            #绘制图表
plt.show()                       #展示图表

在使用pyplot的bar()函数绘制图表时可以通过给xerr,yerr参数传真的方式为柱形添加误差棒,示例代码如下

import numpy as np               #导入模块
import matplotlib.pyplot as plt
x = np.arange(5)   #准备数据
y1 = np.array ([10,8,7,11,13])
y2 = np.array ([9,6,5,10,12])
bar_width =0.3 #设置柱形宽度
fig= plt.figure()                #创建代表画布的Figure类的对象fig
ax = fig.add_subplot()           #在画布fig上添加坐标系风格的绘图区域ax
error = [2,1,2.5,2,1.5]
ax.bar(x,y1,tick_label=['a','b','c','d','e'],width=bar_width)
ax.bar(x,y2,bottom=y1,width=bar_width ,yerr=error)            #绘制图表
plt.show()                       #展示图表

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值