Matplotlib 简单画图

0、Matplotlib -- 简介.note

官网:http://matplotlib.org/

1、Matplotlib -- 绘制多项式函数.note

#-*- coding:utf-8 -*-
#绘制多项式函数
import numpy as np
import matplotlib.pyplot as plt

#以自然数序列作为多项式的系数,使用polyld函数创建多项式
func = np.poly1d(np.array([1,2,3,4]).astype(float))
print func
#使用Numpy的linspace函数创建X轴的数值,在-10和10之间产生30个均匀分布的值
x=np.linspace(-10,10,30)
#计算我们在第一步中创建的多项式的值
y=func(x)

#调用plot函数,这并不会立即显示函数图像
plt.plot(x,y)
#使用xlabel函数添加X轴的标签
plt.xlabel('x')
#使用ylabel函数添加y轴的标签
plt.ylabel('y(x)')
#调用show函数显示函数图像
plt.show()

2、Matplotlib -- 绘制多项式函数及其导函数.note

#-*- coding:utf-8 -*-
#绘制多项式函数及其导函数
#使用两种不同风格的曲线绘制了一个多项式函数以及导函数,并只调用一次plot函数
import numpy as np
import matplotlib.pyplot as plt
#绘制一个多项式,以及使用derive函数和参数m为1得到的其一阶导函数
func=np.poly1d(np.array([1,2,3,4]).astype(float))
func1=func.deriv(m=1)
x=np.linspace(-10,10,30)
y=func(x)
y1=func1(x)

# plt.plot(x,y) #多项式函数
plt.plot(x,y,'ro',x,y1,'g--')  #多项式函数和一阶导函数    红色是导函数、绿色是一阶导函数
plt.xlabel('x')
plt.ylabel('y')
plt.show()

3、Matplotlib -- 绘制多项式函数及其导函数、一阶导和二阶导.note

# -*- coding:utf-8 -*-
#绘制多项式函数及其导函数、一阶导和二阶导
import numpy as np
import matplotlib.pyplot as plt

#创建多项式及其导函数
func=np.poly1d(np.array([1,2,3,4]).astype(float))
x=np.linspace(-10,10,30)
y=func(x)
func1=func.deriv(m=1)
y1=func1(x)
func2=func.deriv(m=2)
y2=func2(x)

#使用subplot函数创建第一个子图。
# 函数的第一个参数是:子图的行数
# 函数的第二个参数是:子图的列数
# 函数的第三个参数是:从1开始的序号
plt.subplot(311)
plt.plot(x,y,'r-')
plt.title("Ploynomial")

#使用subplot函数创建第二个子图,使用蓝色三角形绘制
plt.subplot(312)
plt.plot(x,y1,'b^')
plt.title("First Derivative")

#使用subplot函数绘制第三个子图,使用绿色圆形绘制
plt.subplot(313)
plt.plot(x,y2,'go')
plt.title("Secord Derivaive")

plt.xlabel('x')
plt.ylabel('y')
plt.show()

4、Matplotlib -- 绘制全年的股票价格.note

# -*- coding:utf-8 -*-
#绘制全年的股票价格
from matplotlib.dates import DateFormatter
from matplotlib.dates import DayLocator
from matplotlib.dates import MonthLocator
from matplotlib.finance import quotes_historical_yahoo
from matplotlib.finance import candlestick
import sys
from datetime import date
import matplotlib.pyplot as plt
today=date.today()
start=(today.year-1,today.month,today.day)  #将当前的日期减去1年作为起始日期
#定时器locator,可以在X轴上面定位月份和日期
alldays=DayLocator()
months=MonthLocator()
#创建一个日期格式化data formatter,以格式化X轴上的日期。该格式化将创建一个字符串,包含简写的月份和年份
month_formatter=DateFormatter("%b %Y")

symbol = 'DISH' #Dish Network公司,Dish股价
if len(sys.argv) == 2:
    symbol=sys.argv[1]
#从雅虎财经频道下载股价数据
quotes=quotes_historical_yahoo(symbol,start,today)
print quotes

#创建一个Matplotlib的figure对象,这是绘图组件的顶层容器
fig=plt.figure()
#增加一个子图
ax=fig.add_subplot(111)
#将X轴上的主定位器设置为日定位器。该定位器负责X轴上较粗的刻度
ax.xaxis.set_major_locator(months)
#将X轴上的次定位器设置为日定位器。该定位器负责X轴上较细的刻度
ax.xaxis.set_minor_locator(alldays)
#将X轴上的主格式化器设置为月格式化器,该格式化器负责X轴上较粗刻度的标签
ax.xaxis.set_major_formatter(month_formatter)
#使用获取肚饿股价数据绘制K线图。我们可以指定K线图的宽度
candlestick(ax, quotes)

#将X轴上的标签格式化为日期。为了更好的适应X轴的长度,标签将被旋转
fig.autofmt_xdate()
plt.show()

5、Matplotlib -- 绘制股票分布直方图.note

# -*- coding:utf-8 -*-
#绘制股票分布直方图
#直方图可以将数据的分布可视化
#绘制DISH股价的分布直方图
from matplotlib.finance import quotes_historical_yahoo
import sys
from datetime import date
import matplotlib.pyplot as plt
import numpy as np

#下载一年以来的数据
today=date.today()
start=(today.year-1,today.month,today.day)
symbol='DISH'
if len(sys.argv)==2:
    symbol=sys.argv[1]
quotes=quotes_historical_yahoo(symbol,start,today)

#上一步得到的股价数据存储在python列表中,将其转化为Numpy数组并提取出收盘价数据
quotes=np.array(quotes)
close=quotes.T[4]

#指定合理数量的柱形,绘制分布直方图
plt.hist(close,np.sqrt(len(close)))
plt.show()

6、Matplotlib -- 对数坐标轴  绘制股票成交量.note

# -*- coding:utf-8 -*-
#对数坐标轴  绘制股票成交量
from matplotlib.dates import DateFormatter
from matplotlib.dates import DayLocator
from matplotlib.dates import MonthLocator
from matplotlib.finance import quotes_historical_yahoo
import sys
from datetime import date
import matplotlib.pyplot as plt
import numpy as np
today=date.today()
start=(today.year-1,today.month,today.day)  #将当前的日期减去1年作为起始日期

symbol = 'DISH' #Dish Network公司,Dish股价
if len(sys.argv) == 2:
    symbol=sys.argv[1]
#从雅虎财经频道下载股价数据
quotes=quotes_historical_yahoo(symbol,start,today)
print quotes
quotes=np.array(quotes)
dates=quotes.T[0]
volume=quotes.T[5]

alldays=DayLocator()
months=MonthLocator()
month_formatter=DateFormatter("%b %Y")

#创建一个Matplotlib的figure对象,这是绘图组件的顶层容器
fig=plt.figure()
#增加一个子图
ax=fig.add_subplot(111)
#使用对数坐标
plt.semilogy(dates,volume)
#将X轴上的主定位器设置为日定位器。该定位器负责X轴上较粗的刻度
ax.xaxis.set_major_locator(months)
#将X轴上的次定位器设置为日定位器。该定位器负责X轴上较细的刻度
ax.xaxis.set_minor_locator(alldays)
#将X轴上的主格式化器设置为月格式化器,该格式化器负责X轴上较粗刻度的标签
ax.xaxis.set_major_formatter(month_formatter)

#将X轴上的标签格式化为日期。为了更好的适应X轴的长度,标签将被旋转
fig.autofmt_xdate()
plt.show()
 

7、Matplotlib -- 散点图    绘制DISH的股票收益率和成交量的散点图.note

# -*- coding:utf-8 -*-
#散点图    绘制DISH的股票收益率和成交量的散点图
from matplotlib.finance import quotes_historical_yahoo
import sys
from datetime import date
import matplotlib.pyplot as plt
import numpy as np

today=date.today()
start=(today.year-1,today.month,today.day)

symbol='DISH'
if len(sys.argv)==2:
    symbol=sys.argv[1]

#从雅虎财经频道下载股价数据
quotes=quotes_historical_yahoo(symbol,start,today)    #没有网,这个代码跑不了
print quotes
#得到的quotes数据存储在Python列表中,将其格式化为Numpy数组并提取出收盘价和成交量数据
quotes=np.array(quotes)
close=quotes.T[4]
volume=quotes.T[5]

#计算股票收益率和成交量的变化值
ret=np.diff(close)/close[:-1]
volchange=np.diff(volume)/volume[:-1]
#创建一个Matplotlib的figure对象
fig=plt.figure()
#在图像中绘制一个子图
ax=fig.add_subplot(111)
#创建散点图,并使数据点的颜色与股票收益率相关联,数据点的大小与成交量的变化相关联
ax.scatter(ret,volchange,c=ret*100,s=volchange*100,alpha=0.5)
#设置图像的标题,并添加网格线
ax.set_title('Close and volume returns')
ax.grid(True)

plt.show()

8、Matplotlib -- 根据条件进行着色.note

# -*- coding:utf-8 -*-
#根据条件进行着色
#fill_between函数使用指定的颜色填充图像中的区域
#对股票曲线图进行着色,并将低于均值和高于均值的收盘价填充为不同颜色

from matplotlib.finance import quotes_historical_yahoo
from matplotlib.dates import DateFormatter
from matplotlib.dates import DayLocator
from matplotlib.dates import MonthLocator
import sys
from datetime import date
import matplotlib.pyplot as plt
import numpy as np

today=date.today()
start=(today.year-1,today.month,today.day)

symbol='DISH'
if len(sys.argv)==2:
    symbol=sys.argv[1]

quotes=quotes_historical_yahoo(symbol,start,today)
quotes=np.array(quotes)
dates=quotes.T[0]
close=quotes.T[4]

alldays=DayLocator()
months=MonthLocator()
month_formatter=DateFormatter("%b %Y")

#创建一个Matplotlib的figure对象
fig=plt.figure()
#在图像中添加一个子图
ax=fig.add_subplot(111)
#绘制收盘价数据
ax.plot(dates,close)
#对收盘价下方的数据进行着色,低于或者高于平均收盘价使用不同的颜色填充
plt.fill_between(dates,close.min(),close,where=close>close.mean(),facecolor="green",alpha=0.4)
plt.fill_between(dates,close.min(),close,where=close<close.mean(),facecolor="red",alpha=0.4)
#设置定位器并将X轴格式化为日期
ax.xaxis.set_major_locator(months)
ax.xaxis.set_minor_locator(alldays)
ax.xaxis.set_major_formatter(month_formatter)
ax.grid(True)
fig.autofmt_xdate()
plt.show()
 

9、Matplotlib -- 使用图例和注释.note

# -*- coding:utf-8 -*-
#使用图例和注释
#用legend函数创建透明图例,并由Matplotlib自动确定其摆放位置。同时还可以用annotate函数在图像上精确添加注释,
#并有很多可选的注释和箭头风格

from matplotlib.finance import quotes_historical_yahoo
from matplotlib.dates import DateFormatter
from matplotlib.dates import DayLocator
from matplotlib.dates import MonthLocator
import sys
from datetime import date
import matplotlib.pyplot as plt
import numpy as np

today=date.today()
start=(today.year-1,today.month,today.day)

symbol='DISH'
if len(sys.argv)==2:
    symbol=sys.argv[1]
quotes=quotes_historical_yahoo(symbol,start,today)
quotes=np.array(quotes)
dates=quotes.T[0]
close=quotes.T[4]

fig=plt.figure()
ax=fig.add_subplot(111)

#计算并绘制指数移动平均线
emas=[]
for i in range(9,18,3):
    weights=np.exp(np.linspace(-1.,0.,i))
    weights/=weights.sum()

    ema=np.convolve(weights,close)[i-1:-i+1]
    idx=(i-6)/3
ax.plot(dates[i-1:],ema,lw=idx,label="EMA(%s)" % (i))
    date=np.column_stack((dates[i-1:],ema))
    emas.append(np.rec.fromrecords(date,names=["datas","ema"]))

#找到两条指数移动平均曲线的交点
first=emas[0]["ema"].flatten()
secord=emas[1]["ema"].flatten()
bools=np.abs(first[-len(secord):]-secord)/secord<0.0001
xpoints=np.compress(bools,emas[1])

#将找到的交点用注释和箭头标注出来,并确保注释文本在交点的不远处
for xpoint in xpoints:
    ax.annotate('x',xy=xpoint,textcoords='offset points',xytext=(-50,30),arrowprops=dict(arrowstyle="->"))

#添加一个图例并由Matplotlib自动确定其摆放位置
leg=ax.legend(loc='best',fancybox=True)
#设置alpha通道值,将图例透明化
leg.get_frame().set_alpha(0.5)

alldays=DayLocator()
months=MonthLocator()
month_formatter=DateFormatter("%b %Y")
#绘制收盘价数据
ax.plot(dates,close,lw=1.0,label="Close")
#对收盘价下方的数据进行着色,低于或者高于平均收盘价使用不同的颜色填充
plt.fill_between(dates,close.min(),close,where=close>close.mean(),facecolor="green",alpha=0.4)
plt.fill_between(dates,close.min(),close,where=close<close.mean(),facecolor="red",alpha=0.4)
#设置定位器并将X轴格式化为日期
ax.xaxis.set_major_locator(months)
ax.xaxis.set_minor_locator(alldays)
ax.xaxis.set_major_formatter(month_formatter)
ax.grid(True)
fig.autofmt_xdate()
plt.show()

10、Matplotlib -- 在3维空间中绘图.note

# -*- coding:utf-8 -*-
#在3维空间中绘图

from mpl_toolkits.mplot3d import  Axes3D
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import cm

fig=plt.figure()
#使用3d关键字来指定图像的三维投影
ax=fig.add_subplot(111,projection='3d')

#使用meshgrid函数创建一个二维的坐标网格
u=np.linspace(-1,1,100)
x,y=np.meshgrid(u,u)
z=x**2+y**2
#指定行和列的步幅,以及绘制曲面所用的色彩表
ax.plot_surface(x,y,z,rstride=4,cstride=4,cmap=cm.YlGnBu_r)

plt.show()

11、Matplotlib -- 绘制等高图.note

# -*- coding:utf-8 -*-
#绘制等高图
#Matplotlib中的等高线3D绘图有两种风格:填充和非填充的。
#我们可以使用contour函数创建一般的等高线图,对于色彩填充的等高线图,可以使用contourf

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

fig=plt.figure()
ax=fig.add_subplot(111)

u=np.linspace(-1,1,100)

x,y=np.meshgrid(u,u)
z=x**2+y**2
#绘制等高线图
ax.contourf(x,y,z)

plt.show()

12、Matplotlib -- 制作动画.note

# -*- coding:utf-8 -*-
#制作动画
#绘制3个随机生成的数据集,分别用圆形、小圆点和三角形来显示
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

fig=plt.figure()
ax=fig.add_subplot(111)
N=10
x=np.random.rand(N)
y=np.random.rand(N)
z=np.random.rand(N)
#用不同颜色的圆形、小圆点和三角形绘制三个数据集中的数据点
circles,triangles,dots=ax.plot(x,'ro',y,'g^',z,'b.')
ax.set_ylim(0,1)
plt.axis('off')

#这个函数将被定期调用以更新屏幕的内容
def update(data):
    circles.set_ydata(data[0])
    triangles.set_ydata(data[1])
return circles,triangles

#使用Numpy生成随机数
def generate():
while True:yield np.random.rand(2,N)

anim=animation.FuncAnimation(fig,update,generate,interval=150)
plt.show()

时间: 2024-11-08 19:38:56

Matplotlib 简单画图的相关文章

Matplotlib简单入门学习

因为学习机器学习以及试图通过python实现相应的算法,因此学习了Matplotlib中的画图,那么就问到,问啥不用matlab呢,答:多一门技术,多一口饭:而且发现Matplotlib的画图功能还是蛮强大的,这次仅仅只是学习了以前在MATLAB里面会的相应的东西,然后学习一下在python中对应的知识. matplotlib在Python中应用最多的2D图像的绘图工具包,使用matplotlib能够非常简单的可视化数据.在matplotlib中使用最多的模块就是pyplot.pyplot非常接

jmGraph:一个基于html5的简单画图组件

jmGraph:一个基于html5的简单画图组件 特性: 代码书写简单易理解 面向对象的代码结构 对图形控件化 样式抽离 模块化:入seajs实现模块化开发 兼容性:暂只推荐支持html5的浏览器:ie9+,chrome,firefox等. jiamao/jmgraph · GitHub APIs jmgraph是一个基于html5的WEB前端画图组件. 前端画图对象控件化,支持鼠标和健盘事件响应,可对单个控件样式设定,支持简单的动画处理.可大大地简化前端画图.

OpenGL一: 初始化窗口,简单画图

好久没搞OpenGL了,图形学的理论学的多,看来也需要多多动手做图形学软件,实际多做点东西出来才行. 因为理论书看了很多,但是一直没有太大的突破了,整个游戏是如何做成的,整个引擎怎么做出来的,基本所有相关技术我都了解,对我来说一点都不神秘,但是还是差那么一点点,觉得自己还没有达到专业水准. 感觉那么一点点就是个坎,一直跨不过去,好,这次一定要跨越它! 至于理论书看了多少本,我自己都忘记了,单单说大部头的纯英文书,都超过十几本吧. 这回少看理论了,而由简单的程序开始,下苦功夫,手打上百个程序再说,

Kinaba 简单画图

此片文章简单介绍如何在kinaba 上画图. 如果你,还没有搭建ELK 请参考:ELK日志分析平台搭建全过程 本文参考:http://www.cnblogs.com/hanyifeng/p/5860731.html 一.Kibana之Visualize 功能 在首页上Visualize 标签页用来设计可视化图形.你可以保存之前在discovery中的搜索来进行画图,然后保存该visualize,或者加载合并到 dashboard 里.一个可视化可以基于以下几种数据源类型:一个新的交互式搜索一个已

matplotlib简单的新手教程和动画

做数据分析,首先是要熟悉和理解数据,所以掌握一个趁手的可视化工具是很重要的,否则对数据连个主要的感性认识都没有,怎样进行下一步的design 点击打开链接 还有一个非常棒的资料  Matplotlib Tutorial(译) 使用python绘制动态图的四个栗子: # -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation f

ubuntu 16.04 + python + matplotlib下画图显示中文设置

一.需求 因为在python画图显示的时候,经常需要展示一些中文,但是ubuntu系统下按照默认安装方式安装的时候,一般是不能显示中文的,当强行给legend.xlabel.ylabel赋予中文的时候,会显示为方块 二.参考 http://blog.csdn.net/onepiece_dn/article/details/46239581 三.配置方法 (1)  显示本机的同时可用的中文和西文字体 def dispFonts(): #显示可用的中文字体,同时支持英文的 from matplotl

matplotlib.pyplot画图笔记

一.简单示例 1 import matplotlib.pyplot as plt 2 import numpy as np 3 4 x = np.arange(3,8,1) #x轴数据 5 y1 = x*2 6 y2 = x**2 7 plt.figure(figsize=(5,3.5)) 8 plt.plot(x, y1,'r',marker='o',label='y1:double x') #关键句,前两个参数是X.Y轴数据,其他参数指定曲线属性,如标签label,颜色color,线宽lin

在VR中模拟用鼠标操作电脑并实现简单画图的小程序

(图没有录好,明天换一下) 一.概述 1.实现的基本操作是: 1)用手柄抓住黄色的方块代表手抓住鼠标. 2)通过移动手柄模拟鼠标移动,电脑屏幕上的光标跟着移动. 3)当光标移动到一个Button上时,Button高亮,离开时Button取消高亮,点击Button触发点击事件. 4)当点击Button之后,打开一个画图程序,可以用光标在颜色选择区选择一种颜色,然后在画图区根据光标的移动轨迹,画出选择颜色的光标移动路径的曲线: 2.脚本 1)ComputerController挂在代表电脑的Canv

PyQt5和matplotlib简单结合的实例

demo code import sys import matplotlib.pyplot as plt import numpy as np from PyQt5.QtWidgets import QWidget, QApplication, QVBoxLayout, QPushButton from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FC class MyWidget(QWidget): def __