成为华尔街金融巨鳄第四课:Matplotlib从入门到放弃

# 导包
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
# 默认情况下,mpl不支持中文,我们需要进行一下设置
mpl.rcParams['font.family'] = 'SimHei'
mpl.rcParams['axes.unicode_minus'] = False

一、入门

plt.plot([1,2,3,4],[2,3,1,7],'*-.r') # 绘图函数(折线图)两个参数x,y(list或数组),第三个参数决定图像样式(自行探索)
plt.show() # 显示函数

二、深入

调用show之前的所有plot的图像会在同一张图中显示出来

plt.plot([1,2,3,4],[2,3,1,7],'*-.r')
plt.plot([1,2,3,4],[3,5,1,0],'o-b')
plt.show() # 显示函数

常见的图像标注函数

plt.plot([1,2,3,4],[2,3,1,7],'*-.r',label='LINE A') #label设置图例
plt.plot([1,2,3,7],[3,5,1,0],'o-b',label='LINE B')
# 设置图像标题
plt.title("测试标题")# 设置x轴
plt.xlabel("测试X轴")# 设置y轴
plt.ylabel("测试Y轴")# 设置x轴范围
plt.xlim(0,10)# 设置y轴范围
plt.ylim(0,8)# 设置x轴刻度(可传列表可传数组)
plt.xticks(np.arange(0,10,2))# 设置y轴刻度(第二个参数可将对应的刻度换成指定的形式)
plt.yticks([0,1,3,5,7],['a','b','c','d','e'])# 显示图例
plt.legend()plt.show()

三、和pandas一起搞

import pandas as pd
# 参数parse_dates=True将所有能用时间对象表示的列统统转为时间对象
df = pd.read_csv('maotai.csv',index_col=0,thousands=',',parse_dates=True)[['开盘','收盘','高','低']]
df
开盘 收盘
日期
2021-11-12 1778.00 1773.78 1785.05 1767.00
2021-11-11 1752.93 1769.60 1769.60 1741.50
2021-11-10 1790.01 1753.99 1795.00 1735.00
2021-11-09 1819.98 1790.01 1827.87 1782.00
2021-11-08 1820.00 1820.10 1830.80 1802.05
... ... ... ... ...
2020-11-18 1715.00 1693.65 1720.53 1683.16
2020-11-17 1740.00 1715.80 1742.35 1701.07
2020-11-16 1711.00 1730.05 1730.05 1697.26
2020-11-13 1724.00 1705.00 1728.88 1691.00
2020-11-12 1730.01 1734.79 1750.00 1722.27

244 rows × 4 columns

DataFrame支持直接绘图

df.plot()
plt.show()

作业:

使用Matplotlib模块在一个窗口中绘制数学函数y=x,y=x2,y=x3+5x^2+2x+1的图像,使用不同颜色的线加以区别,并使用图例说明各个线代表什么函数。

我的答案
x=np.linspace(-10,10,10000)
plt.plot(x,x,'-r',label="y=x")
plt.plot(x,x**2,':b',label="y=x^2")
plt.plot(x,3*x**3+5*x**2+2*x+1,'-.y',label="y=3x^3+5x^2+2x+1")
plt.legend()
plt.show()

标准答案
x = np.linspace(-1000,1000,100000)
y1 = x.copy()
y2 = x**2
y3 = 3*x**3+5*x**2+2*x+1
plt.plot(x,y1,color='red',label='y=x')
plt.plot(x,y2,color='green',label='y=x^2')
plt.plot(x,y3,color='blue',label='y=3*x^3+5x^2+2x+1')
plt.xlim(-1000,1000)
plt.ylim(-1000,1000)
plt.legend()
plt.show()

四、Matplotlib画布与子图

提问:如何用一个show画出两张图

# 创建画布
fig = plt.figure()
# 在画布上创建子图 参数221的意思:将画布分成2行2列,该子图占第1个格子
ax1 = fig.add_subplot(2,2,1)
ax2 = fig.add_subplot(2,2,2)
# 在子图上画图
ax1.plot([1,2,3,4],[4,3,2,1])
plt.show()

五、柱状图与饼图

### 柱状图两个参数 第一个参数是柱子中心的位置
plt.bar([0,1,2,4],[5,6,7,8])
plt.show()

#
data = [62,48,56,100]
labels = ['Jan','Feb','Mar','Apr']plt.bar(np.arange(len(data)),data,color='red',width=0.3)
plt.xticks(np.arange(len(data)),labels)
plt.show()

### 饼图 autopct填入格式化字符串,表示饼图上的数据以指定形式出现,explode表示各个板块突出相对于中心多少
plt.pie([10,20,30,40],labels=['a','b','c','d'],autopct="%.2f%%",explode=[0,0.1,0,0.1])
plt.show()

六、绘制K线图

matplotlib.finanace中提供了大量绘制金融相关图的函数接口

绘制K线图:matplotlib.finanace.candlestick_ochl函数

完蛋了,家人们!这个包没了!!

终端输入 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade mpl_finance

更新完毕后,再输入pip install --upgrade mplfinance

更新一下,把包找回来,按照下面的方式导入

import mpl_finance as fin
mpl.use('Qt5Agg')#必须显式指明matplotlib的后端
from matplotlib.dates import date2num
df
开盘 收盘
日期
2021-11-12 1778.00 1773.78 1785.05 1767.00
2021-11-11 1752.93 1769.60 1769.60 1741.50
2021-11-10 1790.01 1753.99 1795.00 1735.00
2021-11-09 1819.98 1790.01 1827.87 1782.00
2021-11-08 1820.00 1820.10 1830.80 1802.05
... ... ... ... ...
2020-11-18 1715.00 1693.65 1720.53 1683.16
2020-11-17 1740.00 1715.80 1742.35 1701.07
2020-11-16 1711.00 1730.05 1730.05 1697.26
2020-11-13 1724.00 1705.00 1728.88 1691.00
2020-11-12 1730.01 1734.79 1750.00 1722.27

244 rows × 4 columns

# data2num将pythondatetime对象转换成数组
df['time']=date2num(df.index.to_pydatetime())
df
开盘 收盘 time
日期
2021-11-12 1778.00 1773.78 1785.05 1767.00 18943.0
2021-11-11 1752.93 1769.60 1769.60 1741.50 18942.0
2021-11-10 1790.01 1753.99 1795.00 1735.00 18941.0
2021-11-09 1819.98 1790.01 1827.87 1782.00 18940.0
2021-11-08 1820.00 1820.10 1830.80 1802.05 18939.0
... ... ... ... ... ...
2020-11-18 1715.00 1693.65 1720.53 1683.16 18584.0
2020-11-17 1740.00 1715.80 1742.35 1701.07 18583.0
2020-11-16 1711.00 1730.05 1730.05 1697.26 18582.0
2020-11-13 1724.00 1705.00 1728.88 1691.00 18579.0
2020-11-12 1730.01 1734.79 1750.00 1722.27 18578.0

244 rows × 5 columns

fig = plt.figure()
ax = fig.add_subplot(1,1,1)
# np.asarray(df)
arr = df[['time','开盘','收盘','高','低']].values
fin.candlestick_ochl(ax,arr)
fig.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

fin.candlestick_ochl(ax,arr) ax为子图,表示在该子图上作K线图,arr传入数组对象,共5组数据分别为时间、开盘数据、收盘数据、最高、最低,即对应o(open)c(close)h(high)l(low)

成为华尔街金融巨鳄第四课:Matplotlib从入门到放弃相关推荐

  1. 成为华尔街金融巨鳄第三课: Pandas2:学会使用Pandas-DataFrame

    成为华尔街金融巨鳄第三课: Pandas2:学会使用Pandas-DataFrame import pandas as pd import numpy as np 一.DataFrame简介和创建:二 ...

  2. 新手第四课-PaddlePaddle快速入门

    新手第四课-PaddlePaddle快速入门 文章目录 新手第四课-PaddlePaddle快速入门 PaddlePaddle基础命令 计算常量的加法:1+1 计算变量的加法:1+1 使用Paddle ...

  3. 【仿真建模】第四课:AnyLogic入门基础课程 - 轨道交通仿真入门讲解

    文章目录 一.轨道库的概念和特点 二.轨道交通仿真 三.更换车头和车身样式 一.轨道库的概念和特点 二.轨道交通仿真 新建模型 搭建轨道 定义轨道上的起点和终点 拖拽出一个trainSource,设置 ...

  4. python dataframe 新列_Python第二十四课:Pandas库(四)

    Python第二十四课:Pandas库(四)点击上方"蓝字",关注我们. 不知不觉,我们已经跨越了千难万险,从零开始,一步步揭开了Python神秘的面纱.学到至今,回过头,才晓得自 ...

  5. 一位华尔街金融大鳄的选股模型

    转 一位华尔街金融大鳄的选股模型https://blog.csdn.net/myquant/article/details/86479713 今天给大家分享一下,欧奈尔的经典名著<笑傲股市> ...

  6. 财富可敌42个国家:金融巨鳄索罗斯的传奇

    乔治-索罗斯是当之无愧的的金融天才,他1969年创立的"量子基金",有着平均每年35%的综合成长率,这个数字恐怕只有巴菲特等少数人能够望其项背.索罗斯作为金融巨鳄的能力在于,他一句 ...

  7. 索罗斯等华尔街金融大鳄,为什么名声那么臭?

    首先,索罗斯等金融大鳄本身玩的是金融,利用金融规则去赚钱,这本身并没有什么错,因为人家没有抢,没有偷,而是光明正大的搞. 但是索罗斯等金融大鳄确实给很多国家带来过灾难,所以从道德上讲,索罗斯是&quo ...

  8. 孙鑫mfc学习笔记第十四课

    第十四课 网络的相关知识,网络程序的编写,Socket是连接应用程序与网络驱动程序的桥梁,Socket在应用程序中创建,通过bind与驱动程序建立关系.此后,应用程序送给Socket的数据,由Sock ...

  9. 第四课.LinuxShell编程

    第四课目录 什么是Shell Shell编程 创建脚本 注释 Shell变量 基本运算 字符串,数组,分支循环,函数 应用实例 猜数字 获取CPU使用情况 探测本地网络 什么是Shell 有人说Lin ...

最新文章

  1. FPGA之道(10)布线资源与接口资源
  2. swift 数组高阶使用(一)
  3. 巨杉内核笔记(一)| SequoiaDB 会话(session)简介
  4. 切题 (problem)(线段树+最大流最小割)
  5. 纯Java中的Functor和Monad示例
  6. linux 查tls模块,TLSSLed · Kali Linux Tools Documents · 看云
  7. 软工小学期实践PART ONE
  8. Excel 2007中的新文件格式
  9. 【datamining】OLTP,OLAP,维度数据库,事实表,维度表、星形和雪花模式、数据立方体、概念分层...
  10. cvCompareHist() 直方图匹配
  11. hourstracker 考勤表软件下载
  12. 截止失真放大电路_一起学模电:6、放大电路静态与动态分析方法
  13. 妙招!如何用Python巧妙的批量合并 Excel!
  14. c语言分离个位十位百位_用c语言如何表示出一个数的个位,百位,十位
  15. Android 服务动态发现 SPA 之 Auto Service
  16. python数据类型小结
  17. 超低功耗研发-STM32L151C8T6芯片(三)RTC自动唤醒机制
  18. python 如果文件夹不存在 创建文件夹
  19. Springboot 整合Websocket+Stomp协议+RabbitMQ做消息代理 实例教程
  20. Qt 遇到的一些问题汇总(二)

热门文章

  1. ps暂存盘已满的解决办法
  2. Halcon:PCB缺陷检测
  3. 部份AirPods Pro出现声音问题 Apple宣布召回计划
  4. 图文+视频手把手教您:两种方法增加PowerPoint可撤消(可撤销)次数
  5. (gitee)gitee凭据配置
  6. 美团是如何基于深度学习实现图像的智能审核?
  7. 光纤传感器实验模块_实验五 光纤传感器位移测量
  8. LUBANSO硬件钱包冷知识,逻辑与查询
  9. BSV网络完成历史性的“创世纪”硬分叉升级
  10. Solidity映射02