Matplotlib模块:绘图和可视化

Matplotlib简介

Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。

导入库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pandas import Series,DataFrame
#内嵌画图
%matplotlib inline
#绘图时可以显示中文
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
常用方法
设置图像标题:plt.title()
设置x轴名称:plt.xlabel()
设置y轴名称:plt.ylabel()
设置x轴范围:plt.xlim()
设置y轴范围:plt.ylim()
设置x轴刻度:plt.xticks()
设置y轴刻度:plt.yticks()
设置曲线图例:plt.legend()

 

画布与子图
画布:figure

fig = plt.figure()
图:subplot

ax1 = fig.add_subplot(2,2,1)
调节子图间距:

subplots_adjust(left, bottom, right, top, wspace, hspace)

plt.figure(figsize=(6,8))
表示figure 的大小为宽、长(单位为inch)
plt.subplot(121)
表示整个figure分成1行2列,共2个子图,这里子图在第一行第一列
plt.subplot(122)
表示子图在第一行第二列

 

画折线图

图一

plot函数:绘制折线图

线型linestyle(-,-.,--,..)
点型marker(v,^,s,*,H,+,x,D,o,…)
颜色color(b,g,r,y,k,w,…)

plt.plot([1,2,3,4],[2,3,1,8],color="red",linestyle="--",marker="*" ,label='lineA') # 画折线()
plt.plot([1,2,3,4],[2,4,6,9],color="blue",linestyle="-",marker="o" ,label='lineB')
plt.title('matplotlib Test')
plt.xlabel('XLabel')
plt.ylabel('YLabel')
plt.xlim(0,6) # x轴刻度范围
plt.ylim(0,10) # y轴刻度范围
plt.xticks(np.arange(0,7,2))
plt.legend()

 

 

 常用参数

 

 

    线条方式

 

  点型

 

 

图二

fig = plt.figure()
ax1 = fig.add_subplot(1,2,1) 
#参数一:子图总行数,子图总列数,子图位置
ax1.plot([1,2,3,4],[7,9,10,8],label='ax1')
ax2 = fig.add_subplot(1,2,2)
ax2.plot([1,2,3,4],[2,4,6,8],label='ax2')
ax1.legend()
ax2.legend()
plt.show()

 图三

x=np.linspace(-3,3,50) #在(-3,3)之间生成50个样本数
y1=2*x+1
y2=x**2
plt.figure(num=1,figsize=(10,5)) #定义编号为1,大小为(10,5)
plt.plot(x,y1,color='red',linewidth=2,linestyle='--')   #颜色线宽及格式
plt.plot(x,y2)
plt.xlim(-1,2) #x轴的范围
plt.ylim(-2,3) #y轴的范围
plt.xlabel("x轴")
plt.ylabel("y轴")
plt.show()

 移动坐标轴

x=np.linspace(-3,3,50) #在(-3,3)之间生成50个样本数
y1=2*x+1
y2=x**2
plt.figure(num=2,figsize=(8,5)) #定义编号为2,大小为(8,5)
plt.plot(x,y1,color='red',linewidth=2,linestyle='--')  
plt.plot(x,y2)
plt.xlim(-1,2) #x轴的范围
plt.ylim(-2,3) #y轴的范围
plt.xlabel("x轴")
plt.ylabel("y轴")

new_ticks=np.linspace(-1,2,5)  #-1到2分成5段,包含端点
print(new_ticks)
plt.xticks(new_ticks)  #进行替换新下标
plt.yticks([-2,-1,0,1,2,],
          [r'$really\ bad$','$bad$','$0$','$well$','$really\ well$'])


ax=plt.gca()  #get current axis
ax.spines['right'].set_color('none') #边框属性设置为None 不显示
ax.spines['top'].set_color('none')


ax.xaxis.set_ticks_position('bottom')  #设置x坐标刻度数字或名称的位置,所有属性为:top,bottom,both,default,none
ax.spines['bottom'].set_position(('data',0)) # 设置.spines边框x轴,设置.set_position设置边框的位置,y=0位置;位置所有属性有outward,axes,data
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0)) #坐标中心点在(0,0)位置

 

 图例变化

x=np.linspace(-3,3,50)
y1=2*x+1
y2=x**2
plt.figure(num=2,figsize=(8,5))
plt.xlim(-1,2)
plt.ylim(-2,3)

new_ticks=np.linspace(-1,2,5) 
plt.xticks(new_ticks)
plt.yticks([-2,-1,1,2,],
          [r'$really\ bad$','$bad$','$well$','$really\ well$'])

l1,=plt.plot(x,y1,color='red',linewidth=2,linestyle='--',label='linear line')
l2,=plt.plot(x,y2,label='square line') 

#单独修改label的信息
plt.legend(loc='upper left',handles=[l1,l2],labels=['up','down']) #显示在左上位置


plt.show() #显示图

#loc参数
best  
upper right  
upper left  
lower left  
lower right  
right  
center right  
lower center  
upper center  
center

 

bar图
data=[20,30,40,50]
labels=['Jan','Feb','Mar','Apr']
plt.bar(np.arange(len(data)),data,width=.3)
plt.xticks(np.arange(len(data)),labels)
plt.show()

 

 

import numpy as np
import matplotlib.pyplot as plt

# 数据
N = 5
x = [20, 10, 30, 25, 15]
y = np.arange(N)

# 绘图 y= y轴, left= 水平条的底部, height 水平条的宽度, width 水平条的长度
p1 = plt.barh(y, left=0, height=0.5, width=x)

# 展示图形
plt.show()

 

 

N = 5
y = [20, 10, 30, 45, 15]
x = np.arange(N)
# 添加地名坐标
str1 = ("北京", "上海", "武汉", "深圳", "重庆")
plt.figure(num=2,figsize=(10,5)) #定义编号为2,大小为(8,5)

# 绘图 x x轴, height 高度, 默认:color="blue", width=0.8
p1 = plt.bar(x, height=y, width=0.5, label="城市指标", tick_label=str1)

# 添加数据标签
for a, b in zip(x, y):
    plt.text(a, b + 0.05, '%.0f' % b, ha='center', va='bottom', fontsize=11)

# 添加图例
plt.legend()

# 展示图形
plt.show()

 

 pie图
plt.pie([10,20,30],labels=['x','y','z'],autopct='%.2f%%',explode=[0.1,0,0.1])
plt.axis('equal')
plt.show()

 

转载于:https://www.cnblogs.com/xiao-apple36/p/11551102.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值