文章目录

  • matplotlib详细介绍
    • 1.颜色和样式
      • 1)如何调整颜色
      • 2)如何调整点型
      • 3)如何调整线型
      • 4)样式字符串
    • 2.三种方式
      • 1)pylab方式
      • 2)pyplot方式
      • 3)面向对象方式
    • 3.子图-subplot
    • 4.多图-可以创建多个Figure
    • 5.网格
    • 6.图例
    • 7.坐标轴范围的调整
    • 8.坐标轴刻度的调整
    • 9.添加坐标轴-双坐标轴
    • 10.注释
    • 11.文字-图形中纯粹的文字标注
    • 12.Tex公式
    • 13.区域填充
    • 14.形状-画填充好的形状
    • 15.样式-美化
    • 16.极坐标

matplotlib详细介绍

1.颜色和样式

1)如何调整颜色

# 颜色
import numpy as np
import matplotlib.pyplot as plt# 8种默认缩写
y=np.arange(1,5)
plt.plot(y,color='g')
# 灰色阴影
plt.plot(y+1,color='1.5')
# html 16进制,代码可以在网上直接搜
plt.plot(y+2,color='#FF00FF')
# RGB元祖
plt.plot(y+3,color=(0.1,0.2,0.3))
plt.show()

2)如何调整点型

# 点样式
import numpy as np
import matplotlib.pyplot as plty=np.arange(1,5)# 指定marker,默认会画出线段;不指定marker,默认只画出点
# 当在一个图中绘制多条线段时,matplotlib会默认采用不同的的颜色
plt.plot(y,marker='o')
plt.plot(y+1,marker='D')
plt.plot(y+2,'^')
plt.plot(y+3,'s')
plt.plot(y+4,'p')
plt.plot(y+5,'x')plt.show()

3)如何调整线型


# 线样式
import numpy as np
import matplotlib.pyplot as plty=np.arange(1,5)
# 4种线的样式
plt.plot(y,'--')
plt.plot(y+1,'-.')
plt.plot(y+2,':')
plt.plot(y+3,'-')plt.show()

4)样式字符串

# 样式字符串
import numpy as np
import matplotlib.pyplot as plty=np.arange(1,5)
# 将颜色、线型、点型写成一个字符串
plt.plot(y,'cx--')
plt.plot(y+1,'kp:')
plt.plot(y+2,'mo-.')plt.show()

2.三种方式


1)pylab方式

#pylab方式
from pylab import *
x=arange(0,10,1)
y=randn(len(x))
plot(x,y)
title('random numbers')
show()

2)pyplot方式

# pyplot方式
import matplotlib.pyplot as plt
import numpy as np
x=np.arange(0,10,1)
y=np.random.randn(len(x))
plt.plot(x,y)
plt.title('pyplot')
plt.show()

3)面向对象方式

# 面向对象方式
import matplotlib.pyplot as plt
import numpy as np
x=np.arange(0,10,1)
y=np.random.randn(len(x))# 生成一个对象(figure对象)
fig = plt.figure()
# 生成一个坐标轴对象
ax = fig.add_subplot(111)
l, = plt.plot(x,y)
# 对标题命名
t = ax.set_title('object oriented')plt.show()

3.子图-subplot

在同一张图上画多个子图

# 面向对象的方式画子图
import matplotlib.pyplot as plt
import numpy as npx = np.arange(1,100)fig = plt.figure()
# 221表示子图总行数为2,子图总列数为2,子图在第一个位置
ax1 = fig.add_subplot(221)
ax1.plot(x,x)ax2 = fig.add_subplot(222)
ax2.plot(x,-x)ax3 = fig.add_subplot(223)
ax3.plot(x,x**x)ax4 = fig.add_subplot(224)
ax4.plot(x,np.log(x))plt.show()

# pyplot画子图
import matplotlib.pyplot as plt
import numpy as npx=np.arange(1,100)plt.subplot(221)
plt.plot(x,x)plt.subplot(222)
plt.plot(x,-x)plt.subplot(223)
plt.plot(x,x*x)plt.subplot(224)
plt.plot(x,np.log(x))plt.show()

4.多图-可以创建多个Figure

同一时间产生多张图

# 多图
import matplotlib.pyplot as pltfig1=plt.figure()
ax1=fig1.add_subplot(111)
ax1.plot([1,2,3],[3,2,1])fig2=plt.figure()
ax2=fig2.add_subplot(111)
ax2.plot([1,2,3],[1,2,3])plt.show()

5.网格

图以网格为背景

# pyplot方式---在交互里面用的很多
import numpy as np
import matplotlib.pyplot as plt
y=np.arange(1,5)plt.plot(y,y*2)
# 控制打开关闭网格,
# plt.grid(True)# color控制网格的颜色,控制网格的线条宽度,控制网格线型
plt.grid(True,color='r',linestyle='-.',linewidth='2')plt.show()

# 用面向对象的方式绘制网格
import matplotlib.pyplot as plt
import numpy as npx=np.arange(0,10,1)
y=np.random.randn(len(x))fig=plt.figure()
ax=fig.add_subplot(111)
l,=plt.plot(x,y)
# 网格
ax.grid(True,color='r',linestyle='-.',linewidth='2')plt.show()

6.图例

# 图例--交互式
import matplotlib.pyplot as plt
import numpy as npx=np.arange(1,11,1)
y=x*xplt.plot(x,x*2,label='Normal')
plt.plot(x,x*3,label='Fast')
plt.plot(x,x*4,label='Faster')# legend函数---让图例显示在图中
# 参数loc来控制图例的位置,0-自适应,1-右上角,2-左上角,3-左下角,4-右下角
# 参数ncol可以是图例扁平化,ncol等于几表明有几列
plt.legend(loc=2,ncol=2)plt.show()
import matplotlib.pyplot as plt
import numpy as npplt.plot(x,x*2)
plt.plot(x,x*3)
plt.plot(x,x*4)plt.legend(['Normal','Fast','Faster'])plt.show()

# 图例-面向对象--第一种方式
import matplotlib.pyplot as plt
import numpy as npx=np.arange(0,10,1)
y=np.random.randn(len(x))fig=plt.figure()
ax=fig.add_subplot(111)# 第一种方式
l,=plt.plot(x,y)
ax.legend(['ax legend'])plt.show()
# 图例-面向对象--第二种方式
import matplotlib.pyplot as plt
import numpy as npx=np.arange(0,10,1)
y=np.random.randn(len(x))fig=plt.figure()
ax=fig.add_subplot(111)line, =plt.plot(x,y,label='Inline label')
plt.show()
# 图例-面向对象---第三种方式
import matplotlib.pyplot as plt
import numpy as npx=np.arange(0,10,1)
y=np.random.randn(len(x))fig=plt.figure()
ax=fig.add_subplot(111)line, = plt.plot(x,y)
line.set_label('label via method')
ax.legend()plt.show()

7.坐标轴范围的调整

# 显示调整x轴、y轴的最大坐标
plt.axis()
plt.axis([-5,5,-10,10])
# 显示调整x轴
plt.xlim()
plt.xlim([-10,10])
plt.xlim(xmin=-5)
# 显示调整y轴
plt.ylim()
# 坐标轴范围调整
import matplotlib.pyplot as plt
import numpy as npx = np.arange(-10,11,1)
plt.plot(x,x)
# 显示调整x轴、y轴的最大坐标
plt.axis([-20,20,-20,10])
plt.show()

8.坐标轴刻度的调整

# 坐标轴刻度的调整
import matplotlib.pyplot as plt
import numpy as npx = np.arange(1,11,1)
# 获取当前图形的坐标轴
ax = plt.gca()
# 函数 locator_params调整坐标轴刻度
# 参数nbins表示坐标轴有多少格
# 第一个参数x或者y可以指定调整,未指定的默认;没有的话,x与y都调整
ax.locator_params('x',nbins=20)
plt.show()

# 日期的调整
# 坐标轴刻度的调整-日期调整
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
import datetimefig = plt.figure()start = datetime.datetime(2015,1,1)
stop = datetime.datetime(2016,1,1)
delta = datetime.timedelta(days=1)dates = mpl.dates.drange(start,stop,delta)y = np.random.rand(len(dates))ax = plt.gca()ax.plot_date(dates,y,linestyle='-',marker='')
# 格式化日期
date_format = mpl.dates.DateFormatter('%Y-%m')
ax.xaxis.set_major_formatter(date_format)
# 将日期的大小根据图形的大小自适义
fig.autofmt_xdate()plt.show()

9.添加坐标轴-双坐标轴

# 添加坐标轴
import matplotlib.pyplot as plt
import numpy as npx = np.arange(2,20,1)
y1 = x*x
y2 = np.log(x)fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.plot(x,y1)
ax1.set_ylabel('Y1')
# 添加坐标轴
ax2 = ax1.twinx()
ax2.plot(x,y2,'r')
ax2.set_ylabel('Y2')ax1.set_xlabel('Compare Y1 and Y2')plt.show()

10.注释

在一个图形上画注释的符号,在某一个地方给予信息提示

# 注释
import matplotlib.pyplot as plt
import numpy as npx = np.arange(-10,11,1)
y = x*xplt.plot(x,y)
# 注释使用annotate函数
# 第一个参数:注释的内容
# 第二个参数:xy填写箭头的坐标
# 第三个参数:xytext填写注释内容的坐标
# 第四个参数arrowprops定义注释箭头信息,其中facecolor表示箭头颜色,frac表示箭头比例
# headwidth定义箭头的宽度,width表示箭身的宽度
plt.annotate('this is the bottom',xy=(0,1),xytext=(0,20),arrowprops=dict(facecolor='r',frac=0.2,headwidth=20,width=10))
plt.show()

11.文字-图形中纯粹的文字标注

# 在图中生成一段文字
import numpy as np
import matplotlib.pyplot as pltx = np.arange(-10,11,1)
y = x*xplt.plot(x,y)
# 使用text函数在图中生成一段文字
# 前两个参数是文字起始点的横纵坐标,第三个参数是文字
# 第四个参数是family表示文字字体,
# size参数定义字体的大小,color定义颜色,style定义字体格式,weight定义字体的粗细
# bbox(箱体)定义一个框用来框住字体,里面有facecolor参数定义箱体颜色,alpha定义透明度
plt.text(-3,30,'function:y=x*x',family='fantasy',size=20,color='g',style='italic',weight=500,bbox=dict(facecolor='r',alpha=0.2))
plt.show()

12.Tex公式

matplotlib自带mathtext引擎,作为开始和结束符如作为开始和结束符 如作为开始和结束符如 y=x*x$
画出数学公式

# Tex公式
import matplotlib.pyplot as pltfig = plt.figure()
ax = fig.add_subplot(111)
# 设置x与y坐标轴
ax.set_xlim([1,7])
ax.set_ylim([1,5])ax.text(2,4,r"$ \alpha_i \beta_j \pi \lambda \omega $",size=25)
ax.text(4,4,r"$ \sin(0)=\cos(\frac{\pi}{2}) $",size=25)
ax.text(2,2,r"$ \lim_{x \rightarrow y} \frac{1}{x^3} $",size=25)
ax.text(4,2,r"$ \sqrt[4]{x}=\sqrt{y} $",size=25)
plt.show()

13.区域填充

给一块区域上色
函数:fill、fill_between

# 区域填充
import numpy as np
import matplotlib.pyplot as pltx = np.linspace(0,5*np.pi,1000)
y1 = np.sin(x)
y2 = np.sin(2*x)
# 填充图形与x轴相交的部分
plt.fill(x,y1,'b',alpha=0.3)
plt.fill(x,y2,'r',alpha=0.3)plt.show()

# 区域填充--面向对象
import numpy as np
import matplotlib.pyplot as pltx = np.linspace(0,5*np.pi,1000)
y1 = np.sin(x)
y2 = np.sin(2*x)fig = plt.figure()
ax = plt.gca()
ax.plot(x,y1,color='r')
ax.plot(x,y2,color='black')
# 根据条件分别填充where
# interpolate=True表示当x离散的厉害时,对空白部分自动填充
ax.fill_between(x,y1,y2,where=y1>=y2,facecolor='y',interpolate=True)
ax.fill_between(x,y1,y2,where=y1<y2,facecolor='g',interpolate=True)plt.show()

14.形状-画填充好的形状

# 形状
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as mpatchesfig,ax = plt.subplots()
xy1 = np.array([0.2,0.2])
xy2 = np.array([0.2,0.8])
xy3 = np.array([0.8,0.2])
xy4 = np.array([0.8,0.8])
# 画圆,圆心-半径
circle = mpatches.Circle(xy1,0.05)
# 把圆添加到画幕上
ax.add_patch(circle)# 画矩形 左下角点的坐标-长-宽-颜色
rect = mpatches.Rectangle(xy2,0.2,0.1,color='r')
ax.add_patch(rect)# 画多边形 图形中心-边数-中心到顶点长度-颜色
polygon = mpatches.RegularPolygon(xy3,5,0.1,color='g')
ax.add_patch(polygon)# 画椭圆形 圆心-长直径-短直径-颜色
ellipse = mpatches.Ellipse(xy4,0.4,0.2,color='y')
ax.add_patch(ellipse)
# 调整x轴y轴比例
plt.axis('equal')
# 网格
plt.grid()plt.show()

15.样式-美化

使用自带样式进行美化

# 样式-美化
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
# 生成两行两列的子图
fig,axes = plt.subplots(ncols=2,nrows=2)
# 将四个子图的坐标轴分别fu为四个对象
ax1,ax2,ax3,ax4 = axes.ravel()x,y = np.random.normal(size=(2,100))
# 散点图
ax1.plot(x,y,'o')
# 直线图
x = np.arange(0,10)
y = np.arange(0,10)
# 循环颜色的数目,axes.prop_cycle来控制颜色循环
ncolors = len(plt.rcParams['axes.prop_cycle'])
# 间距
shift = np.linspace(0,10,ncolors)for s in shift:ax2.plot(x,y+s,'-')# 柱状图
x = np.arange(5)
y1,y2,y3 = np.random.randint(1,25,size=(3,5))
width = 0.25
# 绘制柱状图
ax3.bar(x, y1, width, color=mpl.rcParams['axes.prop_cycle'].by_key()['color'][0])
ax3.bar(x + width, y2, width, color=mpl.rcParams['axes.prop_cycle'].by_key()['color'][1])
ax3.bar(x + 2 * width, y3, width, color=mpl.rcParams['axes.prop_cycle'].by_key()['color'][2])#添加圆形
print(plt.rcParams['axes.prop_cycle'])
# python其实提供了内置的enumerate函数可以同时获得索引和值
# np.random.normal(size,loc,scale)
for i, xcolor in enumerate(plt.rcParams['axes.prop_cycle']):xy = np.random.normal(size=2)ax4.add_patch(plt.Circle(xy, radius=0.3, color=xcolor['color']))
# x、y调成对称
ax4.axis('equal')plt.show()
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np# 1) 默认样式
def DrwaFigures():# 绘制散点fig, ax = plt.subplots(ncols=2, nrows=2)ax1, ax2, ax3, ax4 = ax.ravel()x, y = np.random.normal(size=(2, 100))ax1.plot(x, y, 'o')# 绘制10条不同颜色线段x = np.arange(0, 10)y = np.arange(0, 10)ncolors = len(mpl.rcParams['axes.prop_cycle'])  # 显示颜色种类shift = np.linspace(0, 10, ncolors)for s in shift:ax2.plot(x, y + s, '-')# 绘制柱状图-分别使用默认的0-1-2号颜色x = np.arange(5)y1, y2, y3 = np.random.randint(1, 25, size=(3, 5))width = 0.25# print(mpl.rcParams['axes.prop_cycle'])ax3.bar(x, y1, width, color=mpl.rcParams['axes.prop_cycle'].by_key()['color'][0])ax3.bar(x + width, y2, width, color=mpl.rcParams['axes.prop_cycle'].by_key()['color'][1])ax3.bar(x + 2 * width, y3, width, color=mpl.rcParams['axes.prop_cycle'].by_key()['color'][2])# 添加圆形print(plt.rcParams['axes.prop_cycle'])for i, xcolor in enumerate(plt.rcParams['axes.prop_cycle']):xy = np.random.normal(size=2)ax4.add_patch(plt.Circle(xy, radius=0.3, color=xcolor['color']))ax4.axis('equal')plt.show()if __name__ == '__main__':DrwaFigures()

16.极坐标

绘制以极坐标系为坐标轴的图形(角度和半径)

# 极坐标
import numpy as np
import matplotlib.pyplot as plt
# 半径
r = np.arange(1,6,1)
# 角度
theta = [0,np.pi/2,np.pi,3*np.pi/2,2*np.pi]
# projection='polar'表示将坐标投影为极坐标
ax = plt.subplot(111, projection = 'polar')ax.plot(theta,r,color='r',linewidth=3)
# 网格
ax.grid(True)plt.show()

# 极坐标
import numpy as np
import matplotlib.pyplot as plt
# 半径
# np.empty()根据给定的维度和数值类型返回一个新的数组,其元素不进行初始化。
r = np.empty(5)
r.fill(5)
# 角度
theta = [0,np.pi/2,np.pi,3*np.pi/2,2*np.pi]
# projection='polar'表示将坐标投影为极坐标
ax = plt.subplot(111, projection = 'polar')ax.plot(theta,r,color='r',linewidth=3)
# 网格
ax.grid(True)plt.show()

数据科学包15-matplotlib详细介绍相关推荐

  1. 3.机器学习—数据科学包3.2pandas基础

    pandas基础 一.pandas介绍 1.什么是pandas 2.pandas用途 3.课程内容 二.Ipython开发环境搭建 1.安装 2.新建运行环境 3.Ipython技巧 4.Ipytho ...

  2. 机器学习---数据科学包-第2天

    1 pandas快速入门(一) .Series()方法.Series类型由一组数据及与之相关的数据索引组成. import pandas as pd import numpy as np s = pd ...

  3. HuaPu在学:机器学习——数据科学库【matplotlib】

    数据科学库[matplotlib] 文章目录 数据科学库[matplotlib] 前言 一.数据分析介绍及环境安装 1.为什么要数据分析??? 2.环境安装 二.matplotlib 1.为什么学习m ...

  4. python第二阶段(2)入门-数据科学包 pandas

    数据科学包 pandas 导入pandas 创建对象 1 系列 2 日期序列(1) 3 日期序列(2) 4 Series的操作(1) 5 Series的操作(2) 合并,新增,连接和比较 1 连接 2 ...

  5. 机器学习-数据科学库:matplotlib绘图

    机器学习-数据科学库:matplotlib绘图 matplotlib绘图 matplotlib折线图 matplotlib散点图 matplotlib条形图 matplotlib直方图 对比常用统计图 ...

  6. 数据科学包——Day2

    数据科学包--Day2 利用Pandas, Numpy进行电影数据分析 准备工作 任务: 数据读取 数据合并 按性别查看各个电影的平均评分 男女评分差异最大的电影 活跃电影排行 前十大活跃电影--被评 ...

  7. python 数据科学 包_什么时候应该使用哪个Python数据科学软件包?

    python 数据科学 包 Python is the most popular language for data science. Unfortunately, it can be tricky ...

  8. python中画出距平垂线_3.机器学习—数据科学包3.3pandas操作

    pandas操作 一.pandas索引 1.Series索引index 2.DateFrame行索引index和列索引columns 3.pandas预置索引的类 4.重复索引 4.1重复索引定义 4 ...

  9. ggridges包—峰峦图详细介绍

    上次可视化系列说了瀑布图.它可以用于展示拥有相同的X轴变量数据(如相同的时间序列).不同的Y轴离散型变量(如不同的类别变量)和Z轴数值变量. 本节使用的峰峦图也可以很好地展示瀑布图的数据信息.它们对于 ...

  10. 看看这些鲜为人知的宝藏Python数据科学包吧!

    动态数据科学的这三剑客几乎无人不知无人不晓:Numpy,Pandas和Matplotlib.你可能已经熟悉这些包以及它们的运作方式. 还有其他很炫酷的包,你肯定也想试一试,例如Plotly,Seabo ...

最新文章

  1. 电脑组装与维护教程_小白不会装机?教你如何自己组装一台电脑。装机图文教程...
  2. 反思laravel-admin的使用总结
  3. SpringHttpInvoker解析2-服务端实现
  4. 12个Flex常用功能代码
  5. QQ一键加群android代码,PC和移动端一键添加和打开QQ群代码分析
  6. 三菱PLC 串口通信开发心得经验
  7. 移动位置应用的推动者——ArcGIS移动产品家族
  8. 通达OA2017版工作流触发器应用实例
  9. PostgreSQL 跨数据库实例之间的数据访问
  10. 自组网 AODV路由协议 篇1
  11. Hive——Hive数据类型
  12. Echarts饼图字体颜色
  13. node-sass sass-loader版本对应问题
  14. 【GoLang】Map的遍历
  15. 【论文阅读】Geography-Aware Sequential Location Recommendation
  16. 各类Web应用主流开源项目收集
  17. 推出应用加速器 伟库网为用户应用体验上保险 (转载)
  18. UG NX 12 图形区
  19. 华为通信/网络方面的笔试题——电信基础知识题库
  20. Golang logrus 快速上手

热门文章

  1. HDU 1213 How Many Tables 并查集 水~
  2. 【word】为什么word分两栏的最后一页左边一栏没写完跑到右边去了
  3. Linux下批量修改文件名方法
  4. linux 环境变量和shell变量
  5. Swift入坑系列—集合类型
  6. setter方法的内存错误
  7. 浅复制和深复制的区别?//浅拷贝和深拷贝
  8. 「2013-9-14」Change Remote Desktop Port
  9. 使用Hibernate
  10. python_paramiko模块