: | : | :期货程序化 | :期货程序化研究 | :期货量化学习 | :期货量化 |
返回列表 发帖

Matplotlib(绘图库)- 其他类型图【绘制散点图、条形图、等高线图、饼状图、直方图、3D图等】

Matplotlib(绘图库)- 其他类型图【绘制散点图、条形图、等高线图、饼状图、直方图、3D图等】

1 散点图

使用 scatter() 绘制散点图。
  1. import matplotlib.pyplot as plt  # 为方便简介为plt
  2. import numpy as np  # 画图过程中会使用numpy
  3. import pandas as pd  # 画图过程中会使用pandas

  4. # 使用numpy产生数据
  5. fig = plt.figure()          # 创建一个窗口
  6. ax = fig.add_subplot(1,1,1)   # 在窗口上添加一个子图
  7. x = np.random.random(100)      # 产生随机数组
  8. y = np.random.random(100)      # 产生随机数组
  9. ax.scatter(x,y,s = x*100,c = 'y',marker = (5,1),alpha = 0.5,lw = 2,facecolors = 'none')  
  10. # x横坐标,y纵坐标,s图像大小,c颜色,marker图片,lw图像边框宽度
  11. plt.show()  # 显示图像
复制代码
实例效果图如下:


2 条形图

使用 bar() 绘制条形图。
  1. import matplotlib.pyplot as plt  # 为方便简介为plt
  2. import numpy as np  # 画图过程中会使用numpy
  3. import pandas as pd  # 画图过程中会使用pandas

  4. n = 12
  5. X = np.arange(n)
  6. Y1 = (1-X/float(n)) * np.random.uniform(0.5,1.0,n)
  7. Y2 = (1-X/float(n)) * np.random.uniform(0.5,1.0,n)

  8. fig = plt.figure()   #创建一个窗口
  9. ax=fig.add_subplot(1,1,1)   #添加一个子图

  10. ax.bar(X, +Y1, facecolor='#9999ff', edgecolor='white')
  11. ax.bar(X, -Y2, facecolor='#ff9999', edgecolor='white')

  12. for x,y in zip(X,Y1):
  13.     plt.text(x, y+0.05, '%.2f' % y, ha='center', va= 'bottom')

  14. plt.ylim(-1.25,+1.25)
  15. plt.show()
复制代码
实力效果图如下:


3 等高线图

使用 contourf() 绘制等高线图。
  1. import matplotlib.pyplot as plt  # 为方便简介为plt
  2. import numpy as np  # 画图过程中会使用numpy
  3. import pandas as pd  # 画图过程中会使用pandas

  4. def f(x,y): return (1-x/2+x**5+y**3)*np.exp(-x**2-y**2)

  5. n = 256
  6. x = np.linspace(-3,3,n)
  7. y = np.linspace(-3,3,n)
  8. X,Y = np.meshgrid(x,y)

  9. fig = plt.figure()   #创建一个窗口
  10. ax=fig.add_subplot(1,1,1)   #添加一个子图


  11. ax.contourf(X, Y, f(X,Y), 8, alpha=.75, cmap='jet')
  12. ax.contour(X, Y, f(X,Y), 8, colors='black', linewidth=.5)
  13. plt.show()
复制代码
实例效果图如下:


4 饼状图

使用 pie() 绘制饼状图。
  1. import matplotlib.pyplot as plt  # 为方便简介为plt
  2. import numpy as np  # 画图过程中会使用numpy
  3. import pandas as pd  # 画图过程中会使用pandas


  4. plt.rcParams['font.sans-serif'] = ['SimHei']
  5. plt.rcParams['axes.unicode_minus'] = False

  6. label_list = ["第一部分", "第二部分", "第三部分"]    # 各部分标签
  7. size = [55, 35, 10]    # 各部分大小
  8. color = ["red", "green", "blue"]     # 各部分颜色
  9. explode = [0.05, 0, 0]   # 各部分突出值
  10. '''
  11. 绘制饼图
  12. explode:设置各部分突出
  13. label:设置各部分标签
  14. labeldistance:设置标签文本距圆心位置,1.1表示1.1倍半径
  15. autopct:设置圆里面文本
  16. shadow:设置是否有阴影
  17. startangle:起始角度,默认从0开始逆时针转
  18. pctdistance:设置圆内文本距圆心距离
  19. 返回值
  20. l_text:圆内部文本,matplotlib.text.Text object
  21. p_text:圆外部文本
  22. '''
  23. plt.pie(size, explode=explode, colors=color, labels=label_list, labeldistance=1.1, autopct="%1.1f%%", shadow=False, startangle=90, pctdistance=0.6)
  24. plt.axis("equal")    # 设置横轴和纵轴大小相等,这样饼才是圆的
  25. plt.legend()
  26. plt.show()
复制代码
实例效果图如下:


5 直方图

使用 hist() 绘制直方图。
  1. import matplotlib.pyplot as plt  # 为方便简介为plt
  2. import numpy as np  # 画图过程中会使用numpy
  3. import pandas as pd  # 画图过程中会使用pandas

  4. # 设置matplotlib正常显示中文和负号
  5. plt.rcParams['font.sans-serif']=['SimHei']   # 用黑体显示中文
  6. plt.rcParams['axes.unicode_minus']=False     # 正常显示负号
  7. # 随机生成(10000,)服从正态分布的数据
  8. data = np.random.randn(10000)
  9. '''
  10. 绘制直方图
  11. data:必选参数,绘图数据
  12. bins:直方图的长条形数目,可选项,默认为10
  13. normed:是否将得到的直方图向量归一化,可选项,默认为0,代表不归一化,显示频数。normed=1,表示归一化,显示频率。
  14. facecolor:长条形的颜色
  15. edgecolor:长条形边框的颜色
  16. alpha:透明度
  17. '''
  18. #plt.hist(data, bins=40, normed=0, facecolor="blue", edgecolor="black", alpha=0.7)
  19. plt.hist(data, bins=40, facecolor="blue", edgecolor="black", alpha=0.7)
  20. # 显示横轴标签
  21. plt.xlabel("区间")
  22. # 显示纵轴标签
  23. plt.ylabel("频数/频率")
  24. # 显示图标题
  25. plt.title("频数/频率分布直方图")
  26. plt.show()
复制代码
实例效果图如下:


6 3D图

使用 plot_surface() 绘制直方图。
  1. import matplotlib.pyplot as plt  # 为方便简介为plt
  2. import numpy as np  # 画图过程中会使用numpy
  3. import pandas as pd  # 画图过程中会使用pandas

  4. X = np.arange(-4, 4, 0.25)
  5. Y = np.arange(-4, 4, 0.25)
  6. X, Y = np.meshgrid(X, Y)
  7. R = np.sqrt(X**2 + Y**2)
  8. Z = np.sin(R)

  9. fig = plt.figure()  # 先创建窗口一个窗口
  10. ax1 = fig.add_subplot(1,1,1,projection='3d')
  11. ax1.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='hot')

  12. plt.show()
复制代码
实例效果图如下:

论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
 
期货论坛 - 版权/免责声明   1.本站发布源码(包括函数、指标、策略等)均属开放源码,用意在于让使用者学习程序化语法撰写,使用者可以任意修改语法內容并调整参数。仅限用于个人学习使用,请勿转载、滥用,严禁私自连接实盘账户交易
  2.本站发布资讯(包括文章、视频、历史记录、教材、评论、资讯、交易方案等)均系转载自网络主流媒体,内容仅为作者当日个人观点,本网转载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网不对该类信息或数据做任何保证。不对您构成任何投资建议,不能依靠信息而取代自身独立判断,不对因使用本篇文章所诉信息或观点等导致的损失承担任何责任。
  3.本站发布资源(包括书籍、杂志、文档、软件等)均从互联网搜索而来,仅供个人免费交流学习,不可用作商业用途,本站不对显示的内容承担任何责任。请在下载后24小时内删除。如果喜欢,请购买正版,谢谢合作!
  4.龙听期货论坛原创文章属本网版权作品,转载须注明来源“龙听期货论坛”,违者本网将保留追究其相关法律责任的权力。本论坛除发布原创文章外,亦致力于优秀财经文章的交流分享,部分文章推送时若未能及时与原作者取得联系并涉及版权问题时,请及时联系删除。联系方式:http://www.qhlt.cn/thread-262-1-1.html
如何访问权限为100/255贴子:/thread-37840-1-1.html;注册后仍无法回复:/thread-23-1-1.html;微信/QQ群:/thread-262-1-1.html;网盘链接失效解决办法:/thread-93307-1-1.html

返回列表