首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Python Matplotlib在图形上悬停时显示光标

Python Matplotlib在图形上悬停时显示光标
EN

Stack Overflow用户
提问于 2020-06-21 05:04:51
回答 1查看 992关注 0票数 0

我想在下面标出INS的收盘价,这样就可以了。然后,我想在图形上悬停时添加光标。我遵循https://matplotlib.org/3.1.0/gallery/misc/cursor_demo_sgskip.html的演示,这就是我想要的。

但是,当我将这些行添加到代码中时,它会显示值错误。一开始,我使用时代时间作为x轴,我认为这就是问题所在,所以我把划时代时间转换成日期时间,但它仍然不起作用,什么也没有画出来。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
snap_cursor = SnaptoCursor(ax, secs, df['close'])
fig.canvas.mpl_connect('motion_notify_event', snap_cursor.mouse_move)

"c:\Users\Sam.vscode\extensions\ms-python.python-2020.6.89148\pythonFiles\ptvsd_launcher.py",跟踪(最近一次调用):

第48行,主(PtvsdArgs)文件第432行,在main run() File "c:\Users\Sam.vscode\extensions\ms-python.python-2020.6.89148\pythonFiles\lib\python\old_ptvsd\ptvsd_main_.py",第316行中,在run_file runpy.run_path中(run_file,run_name='main') "C:\Users\Sam\AppData\Local\Programs\Python\Python36\lib\runpy.py",第263行),在run_path pkg_name=pkg_name中,文件"C:\Users\Sam\AppData\Local\Programs\Python\Python36\lib\runpy.py",( script_name=fname)第96行,在_run_module_code mod_name、mod_spec、pkg_name、script_name)第85行中,在_run_code exec(代码,run_globals)文件"c:\Users\Sam\OneDrive\Project\stock\test.py",第89行中,在plt.gcf().autofmt_xdate() .autofmt_xdate第632行中,在autofmt_xdate中self.axes.get_xticklabels(which=which)中:文件.autofmt_xdate第3355行,在get_xticklabels返回self.xaxis.get_ticklabels(minor=minor )中,文件"C:\Users\Sam\AppData\Local\Programs\Python\Python36\lib\site-packages\matplotlib\axis.py",第1320行,在get_ticklabels返回self.get_majorticklabels()文件第1276行,在get_majorticklabels文件"C:\Users\Sam\AppData\Local\Programs\Python\Python36\lib\site-packages\matplotlib\axis.py",第1431行,在"C:\Users\Sam\AppData\Local\Programs\Python\Python36\lib\site-packages\matplotlib\axis.py",的get_major_ticks numticks = len(self.get_majorticklocs()) get_major_ticks第1348行中,在get_majorticklocs返回self.major.locator()文件的第1338行中,在"C:\Users\Sam\AppData\Local\Programs\Python\Python36\lib\site-packages\matplotlib\dates.py",call self.refresh() self.refresh第1364行中,在刷新dmin中,dmax = self.viewlim_to_dt()文件"C:\Users\Sam\AppData\Local\Programs\Python\Python36\lib\site-packages\matplotlib\dates.py",行1098,在viewlim_to_dt .format(Vmin) ValueError:视图限制最小值-36879.777083333334小于1,并且是无效的Matplotlib日期值。如果将非datetime值传递给具有日期时间单位的轴,则通常会发生这种情况。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class SnaptoCursor(object):
    """
    Like Cursor but the crosshair snaps to the nearest x, y point.
    For simplicity, this assumes that *x* is sorted.
    """

    def __init__(self, ax, x, y):
        self.ax = ax
        self.lx = ax.axhline(color='k')  # the horiz line
        self.ly = ax.axvline(color='k')  # the vert line
        self.x = x
        self.y = y
        # text location in axes coords
        self.txt = ax.text(0.7, 0.9, '', transform=ax.transAxes)

    def mouse_move(self, event):
        if not event.inaxes:
            return

        x, y = event.xdata, event.ydata
        indx = min(np.searchsorted(self.x, x), len(self.x) - 1)
        x = self.x[indx]
        y = self.y[indx]
        # update the line positions
        self.lx.set_ydata(y)
        self.ly.set_xdata(x)

        self.txt.set_text('x=%1.2f, y=%1.2f' % (x, y))
        print('x=%1.2f, y=%1.2f' % (x, y))
        self.ax.figure.canvas.draw()

data = td.pricehistory("INS")
df = pd.DataFrame(data['candles'])
df['datetime'] = df.apply(lambda x: datetime.datetime.fromtimestamp(x['datetime']/1000),axis=1)
secs = df['datetime']
fig, ax = plt.subplots(1, 1)  
ax.plot(secs,df['close']) 

snap_cursor = SnaptoCursor(ax, secs, df['close'])
fig.canvas.mpl_connect('motion_notify_event', snap_cursor.mouse_move)

plt.gcf().autofmt_xdate()
myFmt = mdates.DateFormatter('%d-%m-%y %H:%M:%S')
plt.gca().xaxis.set_major_formatter(myFmt)

plt.show()
EN

回答 1

Stack Overflow用户

发布于 2020-06-21 05:31:27

我对SnaptoCursor并不熟悉,但是你有没有考虑过用巧妙的方式来代替呢?

保存了许多代码行,并且非常方便用户:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# install plotly library
!pip install plotly

# import express module
import plotly.express as px

# plot interactive line chart
fig = px.line(data=df, x="datetime", y="close")
fig.show()

它也很灵活。以下是文档:https://plotly.com/python/line-charts/

您也可以使用光标与绘图进行交互,例如:

希望这会有所帮助,当然,这和你想做的不一样!

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

https://stackoverflow.com/questions/62498931

复制
相关文章
matplotlib 设置绘图时显示中文
matplotlib绘图时,经常会遇到中文字体显示为方块的问题。网上有很多解决方案,比较普遍的是在代码里增加下面两行。
超哥的杂货铺
2020/07/28
1.1K0
Python在tkinter界面中显示matplotlib动画
在tkinter应用程序界面中同时显示matplotlib绘制的动态折线图、动态散点图和动态柱状图。
Python小屋屋主
2020/02/23
5K0
Python - 使用 Matplotlib 可视化在 NetworkX 中生成的图形
Python代表了一种灵活的编码语言,以其易用性和清晰性而闻名。这提供了许多库和组件,用于简化不同的任务,包括创建图形和显示。NetworkX 代表了一个高效的 Python 工具包,用于构建、更改和研究复杂网络的排列、移动和操作。然而,Matplotlib是一个流行的工具包,用于在Python中创建静态,动画和交互式可视化。
很酷的站长
2023/08/11
8970
Python - 使用 Matplotlib 可视化在 NetworkX 中生成的图形
Python基础:使用Matplotlib绘制多个图形
Python的Matplotlib库是使用最广泛的数据可视化库之一。使用Matplotlib,可以使用各种图表类型绘制数据,包括折线图、条形图、饼图和散点图。
fanjy
2022/06/04
3.4K0
Python基础:使用Matplotlib绘制多个图形
Python使用matplotlib填充图形指定区域
本文代码重点在于演示Python扩展库matplotlib.pyplot中fill_between()函数的用法。 import numpy as np import matplotlib.pyplot as plt # 生成模拟数据 x = np.arange(0.0, 4.0*np.pi, 0.01) y = np.sin(x) # 绘制正弦曲线 plt.plot(x, y) # 绘制基准水平直线 plt.plot((x.min(),x.max()), (0,0)) # 设置坐标轴标签 plt.xla
Python小屋屋主
2018/04/16
3.1K0
Python使用matplotlib填充图形指定区域
R python在无图形用户界面时保存图片
在用python的matplotlib,和R中自带的作图,如果想保存图片时,当你有图形用户界面时是没有问题的,但是当没有图形用户界面时,会报错: 在R中,解决办法: https://blog.csdn.net/LongBless/article/details/6373291 在python中,解决办法: 在导入matplotlib的其他包之前,写以下语句:   import matplotlib   matplotlib.use('Agg')
Echo_fy
2018/07/06
9780
python通过Matplotlib绘制常见的几种图形
使用matplotlib对几种常见的图形进行绘制 Matplotlib官网 如果想了解更多可查看官网。 import numpy as np import matplotlib.pyplot as plt %matplotlib inline #写了这个就可以不用写plt.show() plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签 plt.rcParams['axes.unicode_minus']=False #用来正常显示负号 X
Python研究者
2021/08/23
8490
matplotlib图形的绘制
matplotlib是Python编程语言及其数值数学扩展包 NumPy的可视化操作界面。它利用通用的图形用户界面工具包,如Tkinter, wxPython, Qt或GTK+,向应用程序嵌入式绘图提供了应用程序接口(API)。此外,matplotlib还有一个基于图像处理库(如开放图形库OpenGL)的pylab接口,其设计与MATLAB非常类似--尽管并不怎么好用SciPy就是用matplotlib进行图形绘制。
用户8346838
2021/03/10
2.3K0
python 图形界面显示图片
Tkinter(也叫Tk接⼝)是Tk图形⽤户界⾯⼯具包标准的Python接⼝。Tk是⼀个轻量级的跨平台图形⽤户界⾯(GUI)开发⼯具。
matinal
2023/10/13
3170
python 图形界面显示图片
Python | Mac下matplotlib中文显示乱码
解决matplotlib中文显示乱码找到一个简单的方法 对Mac来说,一部分字体放在了这里:/Library/Fonts/ 还有一部分在这里:/System/Library/Fonts/ 在使用的时候直接指定字体就好了: # coding=utf-8 from matplotlib.font_manager import FontProperties font = FontProperties(fname='/Library/Fonts/Songti.ttc') from matplotlib impor
MachineLP
2020/02/25
3.6K0
Python | Mac下matplotlib中文显示乱码
试题 算法训练 图形显示——(python)
  编写一个程序,首先输入一个整数,例如5,然后在屏幕上显示如下的图形(5表示行数):   * * * * *   * * * *   * * *   * *   *
SingYi
2022/07/13
4620
鼠标悬停下划线显示特效,html鼠标悬停显示下划线
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/145981.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/28
2.1K0
纯css实现图片悬停时显示渐变圆形信息浮层效果
实现这个主要是使用css布局中的相对定位与绝对定位,以及结合元素样式的opacity透明度实现
itclanCoder
2023/09/14
2000
纯css实现图片悬停时显示渐变圆形信息浮层效果
unity3d:悬停显示
立羽
2023/08/24
3020
Python+matplotlib数据可视化鼠标悬停自动标注功能实现
功能描述:根据已有数据绘制图形之后,鼠标进入轴内自动设置背景色,退出轴时自动恢复背景色,若鼠标移动时悬停于曲线附近,则自动弹出文本标注提示当前值。
Python小屋屋主
2018/07/23
3K0
Python+matplotlib数据可视化鼠标悬停自动标注功能实现
5.2 vim颜色显示和移动光标
vim颜色显示 不同的文件,或者说相同的文件在不同的目录下,就会有可能导致颜色不存在 在centos系统中,/etc下的文件,往往都是都是配置文件,在/etc下一般都会显示颜色,放置在其他位置则不会显示颜色 在/etc目录下的文件,有颜色显示 复制过来的文件,在/tmp目录下,无颜色显示 在一般模式下(即是刚打开的文件) 按两次 gg ,光标会定位到首行,首字母 按大写的字母 O (或者是快捷键shift+o),光标就会定位到刚刚所在的位置的上一行去,并进入编辑模式 然后输入# 和
运维小白
2022/01/06
2.2K0
5.2 vim颜色显示和移动光标
matplotlib相关图形绘制(二)
箱线图是由一组数据的最大值、最小值、中位数、两个四分位数(上、下四分位数)这五个特征值绘制而成的,它主要的作用是反应原始数据分布的特征,还可以进行多组数据分布特征的比较。
朱小五
2020/03/05
9760
matplotlib相关图形绘制(二)
matplotlib相关图形绘制(一)
  折线图用于显示随时间或有序类别而变化的趋势。折线图其实是由多个点连接在一起得到了,当点足够多的时候,折线图就变成了平滑的曲线。
朱小五
2020/03/05
1K0
matplotlib相关图形绘制(一)
点击加载更多

相似问题

在Python中鼠标光标悬停在某物上时显示消息

89

在matplotlib图像上悬停时显示工具提示

111

将光标放在图形上时显示图形的值

21

Python Matplotlib在保存图形/绘图时不显示图形面部颜色

138

悬停时在光标旁边显示图像

316
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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