python中matplotlib绘制图形

简介:

matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图。该包下面有很多对象,比如pylab,pyplot等等,pylab集成了pyplot和numpy两个模块,能够进行快速绘图。Pylab和pyplot(http://matplotlib.org/api/pyplot_api.html)都能够通过对象或者属性对图像进行操作。Pyplot下也有很多对象,如figure,Axes对象等等,对图像进行细节处理。下面通过一些简单和常用的例子进行操作。

  1. 通过pyplot画散点图,调用scatter函数,同时该函数也可以画不同大小点的散点图。例子如下:

# .*.coding : utf-8 .*.
import numpy as np
import matplotlib.pyplot as pltx = np.arange(0,20,2)y = np.linspace(0,20,10)
plt.figure()
plt.scatter(x,y,c='r',marker='*')
plt.xlabel('X')
plt.ylabel('Y')
plt.title('$X*Y$')
plt.show()

2.画曲线图,通过plot函数画曲线图,如下:

import numpy as np
import random
from matplotlib import pylab as pl
from matplotlib import pyplot as plt

#画一条曲线图
plt.figure(figsize=(8,6))   #设置图形的尺寸,单位为英尺
x = np.random.randn(10)*10
y = np.pi*np.sin(x) + 8
x1 = np.arange(0,10,1)
#lines = plt.plot(x,y)
plt.plot(x,y,label = '$np.pi*np.sin(x)+8$',color='red',linewidth = 2)plt.plot(x,y,'bo')
plt.title('Y=a*sin(x)+b')
plt.ylabel('Function-Y')
plt.xlabel('Var-X')
plt.legend()   #图形的右上角显示图形的标签,和上面的plt.plo(x,y,label='')有关
#plt.setp(lines,color = 'r',linewidth = 2.5)

plt.show()

3. 将图像画在多个轴上面,并在一个figure中。可以通过subplot,还有ubplot2grid等等方式均可实现。

import numpy as np
import matplotlib.pylab as plt'''将图形画在一个矩阵制定的表中,利用subplot,plot()中放有多个自变量和函数,画多坐标图'''def f(t):
    return np.exp(-t) * np.cos(2*np.pi*t)
t1 = np.arange(0.0, 5.0, 0.1)
t2 = np.arange(0.0, 5.0, 0.02)
plt.figure(1)
plt.subplot(211)  #subplot(numRows, numCols, plotNum),如:subplot(221)
plt.plot(t1, f(t1), 'bo', t2, f(t2), 'k')
plt.title('pylab first example',fontsize = 16)
plt.subplot(212)
plt.plot(t2, np.cos(2*np.pi*t2), 'r--')
plt.title('pylab second example',fontsize = 16)

plt.show()

4.      使用text将文本表现在图中,并对图像之间进行设置,坐标设置等。

# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
#通过对象的形式文本作图
fig = plt.figure()
fig.suptitle('bold figure suptitle', fontsize=14, fontweight='bold')#figure的标题ax = fig.add_subplot(111)   #figure下的坐标图axfig.subplots_adjust(top=0.85)
ax.set_title('axes title')  #给ax设置标题
ax.set_xlabel('xlabel')     #给ax设置横坐标
ax.set_ylabel('ylabel')     #给ax设置纵坐标
ax.text(3, 8, 'boxed italics text in data coords', style='italic',
        bbox={'facecolor':'red', 'alpha':0.5, 'pad':10})
ax.text(2, 6, r'an equation: $E=mc^2$', fontsize=15)
ax.text(3, 2, unicode('unicode: Institut f\374r Festk\366rperphysik', 'latin-1'))
ax.text(0.95, 0.01, 'colored text in axes coords',
        verticalalignment='bottom', horizontalalignment='right',
        transform=ax.transAxes,
        color='green', fontsize=15)ax.plot([2], [1], 'o')      #ax画图,以及下面添加注释ax.annotate('annotate', xy=(2, 1), xytext=(3, 4),
            arrowprops=dict(facecolor='black', shrink=0.05))
ax.axis([0, 10, 0, 10]) #设置横-纵轴的刻度
plt.show()

5.  通过hist画直方图

import numpy as np
import matplotlib.pyplot as pltx = np.arange(0,1000,0.5)y = np.random.rand(2000)*10
n,bins,patches = plt.hist(y,50,normed=1,alpha=0.8)
plt.title('Hist of Y')
plt.xlabel('Smarts')
plt.ylabel('NormProbability')
plt.text(2,0.12,'$\mu=10,\\sigma=20$')
plt.grid(True)
plt.show()

6.  通过bar画条形图

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0,1000,0.5)
y = np.random.rand(2000)*10n,bins,patches = plt.hist(y,50,normed=1,alpha=0.8)plt.title('Hist of Y')
plt.xlabel('Smarts')
plt.ylabel('NormProbability')
plt.text(2,0.12,'$\mu=10,\\sigma=20$')
plt.grid(True)
plt.show()

7.      对图形中的重要点进行注释,采用annotate实现改功能。具体用法可以采用官方文档。如下:

# .*. coding : utf-8 .*.
import numpy as np
import matplotlib.pyplot as pltx = np.arange(-10,10,1)y = 2*(x**2)-5*x+np.pi
maxy = min(y)
maxyx = x[np.argmin(y)]
plt.figure()
plt.plot(x,y,'-',color='red',linewidth=2.5,label='$2*(x^2)-5*x+np.pi$')
plt.annotate('Max y at points',xy=(maxyx,maxy),xytext=(maxyx+1,maxy+10),
             arrowprops=dict(facecolor='black', shrink=0.01),fontsize=12)
#xy为注释的点,xytext注释点文本的位置
plt.xlabel('X')
plt.ylabel('Y')
plt.xlim(-11,11)
plt.title('plot of y=x^2')plt.show()

matplotlib官方文档中包含可很多画图的方法,如时间序列方面的处理,如:acorr;图像的处理,信号处理,数学公式等等。官方文档(http://matplotlib.org/py-modindex.html










本文转自 chengxuyonghu 51CTO博客,原文链接:http://blog.51cto.com/6226001001/1576049,如需转载请自行联系原作者
目录
相关文章
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
|
数据可视化 数据挖掘 Linux
震撼发布!Python数据分析师必学,Matplotlib与Seaborn数据可视化实战全攻略!
在数据科学领域,数据可视化是连接数据与洞察的桥梁,能让复杂的关系变得直观。本文通过实战案例,介绍Python数据分析师必备的Matplotlib与Seaborn两大可视化工具。首先,通过Matplotlib绘制基本折线图;接着,使用Seaborn绘制统计分布图;最后,结合两者在同一图表中展示数据分布与趋势,帮助你提升数据可视化技能,更好地讲述数据故事。
479 1
|
数据可视化 Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
通过这些思维导图和分析说明表,您可以更直观地理解和选择适合的数据可视化图表类型,帮助更有效地展示和分析数据。
803 8
|
移动开发 数据可视化 数据挖掘
利用Python实现数据可视化:以Matplotlib和Seaborn为例
【10月更文挑战第37天】本文旨在引导读者理解并掌握使用Python进行数据可视化的基本方法。通过深入浅出的介绍,我们将探索如何使用两个流行的库——Matplotlib和Seaborn,来创建引人入胜的图表。文章将通过具体示例展示如何从简单的图表开始,逐步过渡到更复杂的可视化技术,帮助初学者构建起强大的数据呈现能力。
|
数据可视化 JavaScript 前端开发
Python中交互式Matplotlib图表
【10月更文挑战第20天】Matplotlib 是 Python 中最常用的绘图库之一,但默认生成的图表是静态的。通过结合 mpld3 库,可以轻松创建交互式图表,提升数据可视化效果。本文介绍了如何使用 mpld3 在 Python 中创建交互式散点图、折线图和直方图,并提供了详细的代码示例和安装方法。通过添加插件,可以实现缩放、平移和鼠标悬停显示数据标签等交互功能。希望本文能帮助读者掌握这一强大工具。
|
数据采集 数据可视化 数据处理
如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`)
本文介绍了如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`),加载历史数据,计算均线和其他技术指标,实现交易逻辑,记录和可视化交易结果。示例代码展示了如何根据均线交叉和价格条件进行开仓、止损和止盈操作。实际应用时需注意数据质量、交易成本和风险管理。
1110 5
|
数据可视化 算法 JavaScript
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
本文探讨了如何利用图论分析时间序列数据的平稳性和连通性。通过将时间序列数据转换为图结构,计算片段间的相似性,并构建连通图,可以揭示数据中的隐藏模式。文章介绍了平稳性的概念,提出了基于图的平稳性度量,并展示了图分区在可视化平稳性中的应用。此外,还模拟了不同平稳性和非平稳性程度的信号,分析了图度量的变化,为时间序列数据分析提供了新视角。
531 0
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
|
存储 数据可视化 数据挖掘
揭秘!Matplotlib与Seaborn联手,如何让Python数据分析结果一目了然,惊艳全场?
在数据驱动时代,高效直观地展示分析结果至关重要。Python中的Matplotlib与Seaborn是两大可视化工具,结合使用可生成美观且具洞察力的图表。本文通过分析某电商平台的商品销量数据集,展示了如何利用这两个库揭示商品类别与月份间的销售关系及价格对销量的影响。首先使用Matplotlib绘制月份销量分布直方图,再借助Seaborn的箱线图进一步探索不同类别和价格区间下的销量稳定性。
350 10
|
机器学习/深度学习 搜索推荐 数据可视化
Python量化炒股常用的Matplotlib包
Python量化炒股常用的Matplotlib包
499 7
|
数据可视化 数据挖掘 API
Python中的数据可视化利器:Matplotlib与Seaborn对比解析
在Python数据科学领域,数据可视化是一个重要环节。它不仅帮助我们理解数据,更能够让我们洞察数据背后的故事。本文将深入探讨两种广泛使用的数据可视化库——Matplotlib与Seaborn,通过对比它们的特点、优劣势以及适用场景,为读者提供一个清晰的选择指南。无论是初学者还是有经验的开发者,都能从中找到有价值的信息,提升自己的数据可视化技能。
1103 3

推荐镜像

更多