成为华尔街金融巨鳄第四课:Matplotlib从入门到放弃
成为华尔街金融巨鳄第四课: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从入门到放弃相关推荐
- 成为华尔街金融巨鳄第三课: Pandas2:学会使用Pandas-DataFrame
成为华尔街金融巨鳄第三课: Pandas2:学会使用Pandas-DataFrame import pandas as pd import numpy as np 一.DataFrame简介和创建:二 ...
- 新手第四课-PaddlePaddle快速入门
新手第四课-PaddlePaddle快速入门 文章目录 新手第四课-PaddlePaddle快速入门 PaddlePaddle基础命令 计算常量的加法:1+1 计算变量的加法:1+1 使用Paddle ...
- 【仿真建模】第四课:AnyLogic入门基础课程 - 轨道交通仿真入门讲解
文章目录 一.轨道库的概念和特点 二.轨道交通仿真 三.更换车头和车身样式 一.轨道库的概念和特点 二.轨道交通仿真 新建模型 搭建轨道 定义轨道上的起点和终点 拖拽出一个trainSource,设置 ...
- python dataframe 新列_Python第二十四课:Pandas库(四)
Python第二十四课:Pandas库(四)点击上方"蓝字",关注我们. 不知不觉,我们已经跨越了千难万险,从零开始,一步步揭开了Python神秘的面纱.学到至今,回过头,才晓得自 ...
- 一位华尔街金融大鳄的选股模型
转 一位华尔街金融大鳄的选股模型https://blog.csdn.net/myquant/article/details/86479713 今天给大家分享一下,欧奈尔的经典名著<笑傲股市> ...
- 财富可敌42个国家:金融巨鳄索罗斯的传奇
乔治-索罗斯是当之无愧的的金融天才,他1969年创立的"量子基金",有着平均每年35%的综合成长率,这个数字恐怕只有巴菲特等少数人能够望其项背.索罗斯作为金融巨鳄的能力在于,他一句 ...
- 索罗斯等华尔街金融大鳄,为什么名声那么臭?
首先,索罗斯等金融大鳄本身玩的是金融,利用金融规则去赚钱,这本身并没有什么错,因为人家没有抢,没有偷,而是光明正大的搞. 但是索罗斯等金融大鳄确实给很多国家带来过灾难,所以从道德上讲,索罗斯是&quo ...
- 孙鑫mfc学习笔记第十四课
第十四课 网络的相关知识,网络程序的编写,Socket是连接应用程序与网络驱动程序的桥梁,Socket在应用程序中创建,通过bind与驱动程序建立关系.此后,应用程序送给Socket的数据,由Sock ...
- 第四课.LinuxShell编程
第四课目录 什么是Shell Shell编程 创建脚本 注释 Shell变量 基本运算 字符串,数组,分支循环,函数 应用实例 猜数字 获取CPU使用情况 探测本地网络 什么是Shell 有人说Lin ...
最新文章
- 12月7日学习内容整理:ORM单表操作
- [云炬创业管理笔记]第三章测试3
- python协同过滤电影推荐_基于协同过滤的电影推荐系统的设计与实现
- 使用ceph-deploy搭建三节点ceph集群
- 浅谈计算机是如何工作的及Linux下的简单反汇编操作
- python循环语句打印矩形_pycharm软件python的一些循环语句的用法
- idea断点的几个意思_你真的理解Intellij IDEA的Debug技巧吗?这篇文章全部教给你...
- 好用的截图、贴图、长截图(滚动截图)工具(MacOS、Windows)
- 360路由器WISP无线万能中继的应用
- 魔方机器人之搭建Python编程环境
- 说说在JAVA中使用Redis,以及Redis分布锁
- 正则表达式与 re 模块[转]
- 语音助手(基于v3s开源啦)
- 飞书:远程办公更轻松
- 【DBA】 Oracle 学习路线
- 足球经理java_足球经理2019高潜力球员有哪些?全妖人列表一览
- 感觉心上有一阵秋风吹过
- JS 基础(11月1日)
- 苹果市值还是第一,但似乎有些脆弱
- Android开发——蓝牙通信实现