Python绘图

admin 2025年2月15日21:53:54评论3 views字数 8081阅读26分56秒阅读模式

1.二维绘图

a. 一维数据集

用 Numpy ndarray 作为数据传入 ply

1.
import numpy as npimport matplotlib as mplimport matplotlib.pyplot as pltnp.random.seed(1000)y = np.random.standard_normal(10)print "y = %s"% yx = range(len(y))print "x=%s"% xplt.plot(y)plt.show()

Python绘图

Python绘图

2.操纵坐标轴和增加网格及标签的函数
import numpy as npimport matplotlib as mplimport matplotlib.pyplot as pltnp.random.seed(1000)y = np.random.standard_normal(10)plt.plot(y.cumsum())plt.grid(True) ##增加格点plt.axis('tight') # 坐标轴适应数据量 axis 设置坐标轴plt.show()

Python绘图

3.plt.xlim 和 plt.ylim 设置每个坐标轴的最小值和最大值
#!/etc/bin/python#coding=utf-8import numpy as npimport matplotlib as mplimport matplotlib.pyplot as pltnp.random.seed(1000)y = np.random.standard_normal(20)plt.plot(y.cumsum())plt.grid(True) ##增加格点plt.xlim(-1,20)plt.ylim(np.min(y.cumsum())- 1, np.max(y.cumsum()) + 1)plt.show()

Python绘图

4. 添加标题和标签 plt.title, plt.xlabe, plt.ylabel 离散点, 线
#!/etc/bin/python#coding=utf-8import numpy as npimport matplotlib as mplimport matplotlib.pyplot as pltnp.random.seed(1000)y = np.random.standard_normal(20)plt.figure(figsize=(7,4)) #画布大小plt.plot(y.cumsum(),'b',lw = 1.5) # 蓝色的线plt.plot(y.cumsum(),'ro') #离散的点plt.grid(True)plt.axis('tight')plt.xlabel('index')plt.ylabel('value')plt.title('A simple Plot')plt.show()

Python绘图

b. 二维数据集

np.random.seed(2000)y = np.random.standard_normal((10, 2)).cumsum(axis=0)   #10行2列   在这个数组上调用cumsum 计算赝本数据在0轴(即第一维)上的总和print y

Python绘图

1.两个数据集绘图
#!/etc/bin/python#coding=utf-8import numpy as npimport matplotlib as mplimport matplotlib.pyplot as pltnp.random.seed(2000)y = np.random.standard_normal((10, 2))plt.figure(figsize=(7,5))plt.plot(y, lw = 1.5)plt.plot(y, 'ro')plt.grid(True)plt.axis('tight')plt.xlabel('index')plt.ylabel('value')plt.title('A simple plot')plt.show()

Python绘图

2.添加图例 plt.legend(loc = 0)
#!/etc/bin/python#coding=utf-8import numpy as npimport matplotlib as mplimport matplotlib.pyplot as pltnp.random.seed(2000)y = np.random.standard_normal((10, 2))plt.figure(figsize=(7,5))plt.plot(y[:,0], lw = 1.5,label = '1st')plt.plot(y[:,1], lw = 1.5, label = '2st')plt.plot(y, 'ro')plt.grid(True)plt.legend(loc = 0) #图例位置自动plt.axis('tight')plt.xlabel('index')plt.ylabel('value')plt.title('A simple plot')plt.show()

Python绘图

3.使用2个 Y轴(左右)fig, ax1 = plt.subplots() ax2 = ax1.twinx()
#!/etc/bin/python#coding=utf-8import numpy as npimport matplotlib as mplimport matplotlib.pyplot as pltnp.random.seed(2000)y = np.random.standard_normal((10, 2))fig, ax1 = plt.subplots() # 关键代码1 plt first data set using first (left) axisplt.plot(y[:,0], lw = 1.5,label = '1st')plt.plot(y[:,0], 'ro')plt.grid(True)plt.legend(loc = 0) #图例位置自动plt.axis('tight')plt.xlabel('index')plt.ylabel('value')plt.title('A simple plot')ax2 = ax1.twinx()  #关键代码2  plt second data set using second(right) axisplt.plot(y[:,1],'g', lw = 1.5, label = '2nd')plt.plot(y[:,1], 'ro')plt.legend(loc = 0)plt.ylabel('value 2nd')plt.show()

Python绘图

4.使用两个子图(上下,左右)plt.subplot(211)

通过使用 plt.subplots 函数,可以直接访问底层绘图对象,例如可以用它生成和第一个子图共享 x 轴的第二个子图.

#!/etc/bin/python#coding=utf-8import numpy as npimport matplotlib as mplimport matplotlib.pyplot as pltnp.random.seed(2000)y = np.random.standard_normal((10, 2))plt.figure(figsize=(7,5))plt.subplot(211)  #两行一列,第一个图plt.plot(y[:,0], lw = 1.5,label = '1st')plt.plot(y[:,0], 'ro')plt.grid(True)plt.legend(loc = 0) #图例位置自动plt.axis('tight')plt.ylabel('value')plt.title('A simple plot')plt.subplot(212) #两行一列.第二个图plt.plot(y[:,1],'g', lw = 1.5, label = '2nd')plt.plot(y[:,1], 'ro')plt.grid(True)plt.legend(loc = 0)plt.xlabel('index')plt.ylabel('value 2nd')plt.axis('tight')plt.show()

Python绘图

5.左右子图

有时候,选择两个不同的图标类型来可视化数据可能是必要的或者是理想的.利用子图方法:

#!/etc/bin/python#coding=utf-8import numpy as npimport matplotlib as mplimport matplotlib.pyplot as pltnp.random.seed(2000)y = np.random.standard_normal((10, 2))plt.figure(figsize=(10,5))plt.subplot(121)  #两行一列,第一个图plt.plot(y[:,0], lw = 1.5,label = '1st')plt.plot(y[:,0], 'ro')plt.grid(True)plt.legend(loc = 0) #图例位置自动plt.axis('tight')plt.xlabel('index')plt.ylabel('value')plt.title('1st Data Set')plt.subplot(122)plt.bar(np.arange(len(y)), y[:,1],width=0.5, color='g',label = '2nc')plt.grid(True)plt.legend(loc=0)plt.axis('tight')plt.xlabel('index')plt.title('2nd Data Set')plt.show()

Python绘图

c.其他绘图样式,散点图,直方图等

1.散点图 scatter
#!/etc/bin/python#coding=utf-8import numpy as npimport matplotlib as mplimport matplotlib.pyplot as pltnp.random.seed(2000)y = np.random.standard_normal((1000, 2))plt.figure(figsize=(7,5))plt.scatter(y[:,0],y[:,1],marker='o')plt.grid(True)plt.xlabel('1st')plt.ylabel('2nd')plt.title('Scatter Plot')plt.show()

Python绘图

2.直方图 plt.hist
#!/etc/bin/python#coding=utf-8import numpy as npimport matplotlib as mplimport matplotlib.pyplot as pltnp.random.seed(2000)y = np.random.standard_normal((1000, 2))plt.figure(figsize=(7,5))plt.hist(y,label=['1st','2nd'],bins=25)plt.grid(True)plt.xlabel('value')plt.ylabel('frequency')plt.title('Histogram')plt.show()

Python绘图

3.直方图 同一个图中堆叠
#!/etc/bin/python#coding=utf-8import numpy as npimport matplotlib as mplimport matplotlib.pyplot as pltnp.random.seed(2000)y = np.random.standard_normal((1000, 2))plt.figure(figsize=(7,5))plt.hist(y,label=['1st','2nd'],color=['b','g'],stacked=True,bins=20)plt.grid(True)plt.xlabel('value')plt.ylabel('frequency')plt.title('Histogram')plt.show()

Python绘图

4.箱型图 boxplot
#!/etc/bin/python#coding=utf-8import numpy as npimport matplotlib as mplimport matplotlib.pyplot as pltnp.random.seed(2000)y = np.random.standard_normal((1000, 2))fig, ax = plt.subplots(figsize=(7,4))plt.boxplot(y)plt.grid(True)plt.setp(ax,xticklabels=['1st' , '2nd'])plt.xlabel('value')plt.ylabel('frequency')plt.title('Histogram')plt.show()

Python绘图

5.绘制函数
from matplotlib.patches import Polygonimport numpy as npimport matplotlib.pyplot as plt#1. 定义积分函数def func(x):    return 0.5 * np.exp(x)+1#2.定义积分区间a,b = 0.5, 1.5x = np.linspace(0, 2 )y = func(x)#3.绘制函数图形fig, ax = plt.subplots(figsize=(7,5))plt.plot(x,y, 'b',linewidth=2)plt.ylim(ymin=0)#4.核心, 我们使用Polygon函数生成阴影部分,表示积分面积:Ix = np.linspace(a,b)Iy = func(Ix)verts = [(a,0)] + list(zip(Ix, Iy))+[(b,0)]poly = Polygon(verts,facecolor='0.7',edgecolor = '0.5')ax.add_patch(poly)#5.用plt.text和plt.figtext在图表上添加数学公式和一些坐标轴标签。plt.text(0.5 *(a+b),1,r"$int_a^b f(x)mathrm{d}x$", horizontalalignment ='center',fontsize=20)plt.figtext(0.9, 0.075,'$x$')plt.figtext(0.075, 0.9, '$f(x)$')#6. 分别设置x,y刻度标签的位置。ax.set_xticks((a,b))ax.set_xticklabels(('$a$','$b$'))ax.set_yticks([func(a),func(b)])ax.set_yticklabels(('$f(a)$','$f(b)$'))plt.grid(True)

Python绘图

2.金融学图表 matplotlib.finance

1.烛柱图 candlestick

#!/etc/bin/python#coding=utf-8import matplotlib.pyplot as pltimport matplotlib.finance as mpfstart = (2014, 5,1)end = (2014, 7,1)quotes = mpf.quotes_historical_yahoo('^GDAXI',start,end)# print quotes[:2]fig, ax = plt.subplots(figsize=(8,5))fig.subplots_adjust(bottom = 0.2)mpf.candlestick(ax, quotes, width=0.6, colorup='b',colordown='r')plt.grid(True)ax.xaxis_date() #x轴上的日期ax.autoscale_view()plt.setp(plt.gca().get_xticklabels(),rotation=30) #日期倾斜plt.show()

Python绘图

2. plot_day_summary

该函数提供了一个相当类似的图标类型,使用方法和 candlestick 函数相同,使用类似的参数. 这里开盘价和收盘价不是由彩色矩形表示,而是由两条短水平线表示.

#!/etc/bin/python#coding=utf-8import matplotlib.pyplot as pltimport matplotlib.finance as mpfstart = (2014, 5,1)end = (2014, 7,1)quotes = mpf.quotes_historical_yahoo('^GDAXI',start,end)# print quotes[:2]fig, ax = plt.subplots(figsize=(8,5))fig.subplots_adjust(bottom = 0.2)mpf.plot_day_summary(ax, quotes,  colorup='b',colordown='r')plt.grid(True)ax.xaxis_date() #x轴上的日期ax.autoscale_view()plt.setp(plt.gca().get_xticklabels(),rotation=30) #日期倾斜plt.show()

Python绘图

3.股价数据和成交量

#!/etc/bin/python#coding=utf-8import matplotlib.pyplot as pltimport numpy as npimport matplotlib.finance as mpfstart = (2014, 5,1)end = (2014, 7,1)quotes = mpf.quotes_historical_yahoo('^GDAXI',start,end)# print quotes[:2]quotes = np.array(quotes)fig, (ax1, ax2) = plt.subplots(2, sharex=True, figsize=(8,6))mpf.candlestick(ax1, quotes, width=0.6,colorup='b',colordown='r')ax1.set_title('Yahoo Inc.')ax1.set_ylabel('index level')ax1.grid(True)ax1.xaxis_date()plt.bar(quotes[:,0] - 0.25, quotes[:, 5], width=0.5)ax2.set_ylabel('volume')ax2.grid(True)ax2.autoscale_view()plt.setp(plt.gca().get_xticklabels(),rotation=30)plt.show()

Python绘图

3.3D 绘图

#!/etc/bin/python#coding=utf-8import numpy as npimport matplotlib.pyplot as pltstike = np.linspace(50, 150, 24)ttm = np.linspace(0.5, 2.5, 24)stike, ttm = np.meshgrid(stike, ttm)print  stike[:2]iv = (stike - 100) ** 2 / (100 * stike) /ttmfrom mpl_toolkits.mplot3d import Axes3Dfig = plt.figure(figsize=(9,6))ax = fig.gca(projection='3d')surf = ax.plot_surface(stike, ttm, iv, rstride=2, cstride=2, cmap=plt.cm.coolwarm, linewidth=0.5, antialiased=True)ax.set_xlabel('strike')ax.set_ylabel('time-to-maturity')ax.set_zlabel('implied volatility')plt.show()

Python绘图

摘自https://www.cnblogs.com/chaoren399/p/5792168.html

原文始发于微信公众号(汇编语言):Python绘图

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月15日21:53:54
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Python绘图https://cn-sec.com/archives/1048077.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息