首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用Matplotlib发布注释点

使用Matplotlib发布注释点
EN

Stack Overflow用户
提问于 2021-07-19 19:21:49
回答 1查看 32关注 0票数 0

我正在使用Python和Matplotlib编写一个Jupyter笔记本脚本,它应该通过yfinance包获取指定股票的历史股票价格,并绘制每只股票的波动率与潜在回报。

预期的和实际的结果可以在here上找到。

正如您在第二个图像中看到的,股票代码的每个点旁边的注释完全缺失。我是Matplotlib的新手,所以我有点迷茫。使用的代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import yfinance as yf
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from functools import reduce
from google.colab import files

sns.set()

directory = '/datasets/stocks/'
stocks = ['AAPL', 'MSFT', 'AMD', 'TWTR', 'TSLA']

#Download each stock's 6-month historical daily stock price and save to a .csv
df_list = list()
for ticker in stocks:
    data = yf.download(ticker, group_by="Ticker", period='6mo')
    df = pd.concat([data])
    csv = df.to_csv()
    with open(directory+ticker+'.csv', 'w') as f:
      f.write(csv)

#Get the .csv filename as well as the full path to each file
ori_name = []
for stock in stocks:
  ori_name.append(stock + '.csv')
stocks = [directory + s for s in ori_name]

dfs = [pd.read_csv(s)[['Date', 'Close']] for s in stocks]
data = reduce(lambda left,right: pd.merge(left,right,on='Date'), dfs).iloc[:, 1:]

returns = data.pct_change()
mean_daily_returns = returns.mean()
volatilities = returns.std()

combine = pd.DataFrame({'returns': mean_daily_returns * 252,
                       'volatility': volatilities * 252})

g = sns.jointplot("volatility", "returns", data=combine, kind="reg",height=7)

#Apply Annotations
for i in range(combine.shape[0]):
    name = ori_name[i].replace(',csv', '')
    x = combine.iloc[i, 1]
    y = combine.iloc[i, 0]
    print(name)
    print(x, y)
    print('\n')
    plt.annotate(name, xy=(x,y)) 
    
plt.show()

打印出股票名称和我尝试放置注释的相应x,y位置将显示以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
AAPL.csv
4.285630458382526 0.24836925418906455


MSFT.csv
3.3916453932738966 0.5159276490876817


AMD.csv
6.040090684498841 -0.002179408770566866


TWTR.csv
7.911518867192316 0.8556785016280568


TSLA.csv
9.154424353004579 -0.40596099327336554

除非我弄错了,否则这些就是在图表上绘制的确切的点。因此,我对为什么文本没有被正确注释感到困惑。我假设这与plt.annotate()xycoords参数有关,但我对不同的坐标系知之甚少,无法知道应该使用哪个坐标系,或者这是否是问题的根本原因。

任何帮助都将不胜感激。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2021-07-19 21:24:34

正如@JodyKlymak在他上面的评论中所说的那样,我的代码的问题源于包含几个子图的联合图,阻止了annotate()知道文本放置基于哪个轴。这个问题很容易解决,只需用g.ax_joint.annotate()替换plt.annotate()即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68445932

复制
相关文章
如何将多个 kubeconfig 文件合并为一个?
项目通常有多个 k8s 集群环境,dev、testing、staging、prod,kubetcl 在多个环境中切换,操作集群 Pod 等资源对象,前提条件是将这三个环境的配置信息都写到本地机的 $HOME/.kube/config 文件中。
我的小碗汤
2023/03/19
2.4K0
如何将多个 kubeconfig 文件合并为一个?
python根据已有文件名的文件复制文件到新文件夹中
最近需要对一些图片进行整理,需要从一堆图片中将已经存在在文件中的图片移动到另外一个新的文件夹中,所以就特意就写了一个小玩意方便使用.下面是代码实现:
小海怪的互联网
2019/10/14
3.8K0
Java 将两个Map对象合并为一个Map对象
实现方式是通过 putAll() 方法将多个 map 对象中的数据放到另外一个全新的 map 对象中,代码如下所示,展示了两个 map 对象的合并,如果是多个 map 合并也是用这种方式。
程序员十三
2018/12/28
4.6K0
java将字符串存入GridF并通过id或文件名查询
import static org.bson.codecs.configuration.CodecRegistries.fromProviders; import static org.bson.codecs.configuration.CodecRegistries.fromRegistries; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.InputStream; i
HUC思梦
2020/09/03
8650
python两个列表合并为字典,一个作为
两个列表合并为一个字典函数list_dic(list1,list2)可以直接复制拿走
py3study
2020/01/17
2.4K0
Java中如何把两个数组合并为一个
http://freewind.me/blog/20110922/350.html
全栈程序员站长
2022/09/07
1.3K0
pycharm创建第一个程序_python创建新文件
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/174511.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/27
4930
pycharm创建第一个程序_python创建新文件
如何将文件名称批量导入excel
不给赞赏的话给个赞或者关注下公众号TungHsu吧,不会让你失望的,好玩的数据,免费的软件,学习资料和方法。
用户1315847
2018/07/26
4.7K0
如何将文件名称批量导入excel
Go处理字符串到合法文件名
使用filenamify库 Demo package main import ( "github.com/flytam/filenamify" "fmt" ) func main() { output,err :=filenamify.Filenamify(`<foo/bar>`,filenamify.Options{}) fmt.Println(output,err) // => foo!bar,nil //--- output,err =filenamify.Filen
ACK
2020/02/18
9780
如何删除一个文件名以分号开头的文件
该文讲述了如何删除一个文件名以分号开头的文件。作者通过在Linux上使用VIM编辑器不小心创建了一个文件名以分号开头的文件,尝试使用多种方法删除该文件,包括使用rm命令和转义字符。最后,作者通过在rm命令中添加转义字符成功删除了该文件。
雷大亨
2018/01/01
2.3K0
vscode 设置打开新文件不覆盖前一个窗口
vscode 打开文件时如果会覆盖掉原来窗口中打开的未做修改的文件,非常影响使用体验
Leophen
2020/11/03
6.7K0
vscode 设置打开新文件不覆盖前一个窗口
/var/spool/postfix/maildrop/ 中有大量的文件
今天查看硬盘剩余的容量,发现‘/’目录下占用了大量的空间;可我在这个目录下面没有放什么东西;仔细查看在/var/spool/postfix/maildrop/ 中发现了大量的文件。怎么会有这么多的文件呢,先删除。
双面人
2019/04/10
1.7K0
Python压缩新文件到已有ZIP文件
本文要点在于使用Python标准库zipfile创建压缩文件时,如果使用'a'模式时,可以追加新内容。 from zipfile import ZipFile from os import listdir from os.path import isfile, isdir, join def addFileIntoZipfile(srcDir, fp): #遍历该文件夹中所有文件 for subpath in listdir(srcDir): subpath = join(srcDir,
Python小屋屋主
2018/04/16
1.2K0
Python文件名后缀_python获取目录下所有文件的文件名
使用 os.path.splitext(file)[0] 可获得 文件名 。 使用 os.path.splitext(file)[-1] 可获得以 . 开头的 文件后缀名 。
全栈程序员站长
2022/11/09
4.6K0
当一个文件中有个证书链
公众号是真的好久没更新了,实在抱歉,过年之后到现在终于觉得开始清闲了一下,最近一直在整理在日本时候的照片,主要是最后一个月末赶上了樱花季,得以观赏了樱花盛开的画面,之后跟大家分享一下。
琉璃康康
2022/04/19
5350
两个数组合并成一个数组 请把两个数组 ['A1', 'A2', 'B1', 'B2', 'C1', 'C2', 'D1', 'D2'] 和 ['A', 'B', 'C', 'D'],合并为 ['...
方案1 let arr1 = ['A1', 'A2', 'B1', 'B2', 'C1', 'C2', 'D1', 'D2'] let arr2 = ['A', 'B', 'C', 'D'] arr2 = arr2.map(v => `${v}3`); let arr3=[...arr1, ...arr2].sort().map(v => v.replace('3', '')) console.log(arr3) 方案2 let arr1 = ['A1', 'A2', 'B1', 'B
刘嘿哈
2022/10/25
2K0
算法练习(20) - 将一个交错数据合并为一个一维数组
编程题(20分钟) 将一个交错数据合并为一个一维数组 输入: strJaggedArray[][], 由多个一维数组(长度不定,个数不定)组成的交错数组 输出: strArray[], 由strJaggedArray[r][c]中的元素以"&"为分隔符拼合而成, 是strJaggedArray中数组元素的无重复组合(不考虑顺序)
惊羽-布壳儿
2022/06/15
6140
linux的文件名的长度限制_linux补全文件名
编写本文档,主要目的是为了验证linux下文件数、目录数、文件名长度的各种限制二、文档内容
全栈程序员站长
2022/11/01
5.9K0
Java将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成
By CaesarChang 合作: root121toor@gmail.com ~关注我 带你看更多精品技术和面试必备 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 我们设定一个哨兵节点 prehead 和新链表,让prehead等于新链表,我们维护一个 pre,我们需要做的是调整它的 next 指针。然后,我们重复以下过程,直到 l1 或者 l2 指向了 null :如果 l1 当前节点的值小于等于 l2
CaesarChang张旭
2021/01/26
1.6K0
点击加载更多

相似问题

Python -将csv文件合并为一个共同轴

32

熊猫将表合并为两个共同的列

24

将“”改为“。文件名中有"_“

12

将多个文件合并为一个文件,包括文件名。

40

将新文件名传回jquery

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文