成为华尔街金融巨鳄第四课: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. 12月7日学习内容整理:ORM单表操作
  2. [云炬创业管理笔记]第三章测试3
  3. python协同过滤电影推荐_基于协同过滤的电影推荐系统的设计与实现
  4. 使用ceph-deploy搭建三节点ceph集群
  5. 浅谈计算机是如何工作的及Linux下的简单反汇编操作
  6. python循环语句打印矩形_pycharm软件python的一些循环语句的用法
  7. idea断点的几个意思_你真的理解Intellij IDEA的Debug技巧吗?这篇文章全部教给你...
  8. 好用的截图、贴图、长截图(滚动截图)工具(MacOS、Windows)
  9. 360路由器WISP无线万能中继的应用
  10. 魔方机器人之搭建Python编程环境
  11. 说说在JAVA中使用Redis,以及Redis分布锁
  12. 正则表达式与 re 模块[转]
  13. 语音助手(基于v3s开源啦)
  14. 飞书:远程办公更轻松
  15. 【DBA】 Oracle 学习路线
  16. 足球经理java_足球经理2019高潜力球员有哪些?全妖人列表一览
  17. 感觉心上有一阵秋风吹过
  18. JS 基础(11月1日)
  19. 苹果市值还是第一,但似乎有些脆弱
  20. Android开发——蓝牙通信实现

热门文章

  1. 打开天正显示服务器连接不可用,打开天正提示找不到可用cad版本 - 卡饭网
  2. H3C交换机配置链路聚合
  3. wps表格带单位求和
  4. android微信开放平台,申请移动应用的应用签名如何获取
  5. 触手可及的人工智能,大师级游戏AI正在进化
  6. 大话IT第12期:揭密疯狂的lulzsec***组织
  7. 【沃顿商学院学习笔记】领导力——Impact Investing:03 经典影响力投资 Classic Impact Investing
  8. autojs脚本引擎开发的的Intent生成器工具源码免费分享开源
  9. 既然选择了远方,就只顾风雨兼程!
  10. 斯尔福 实验室 平面布局原则