找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 3322|回复: 5

[求助] 求问python绘图的库

2

主题

6

帖子

6

积分

贫民

积分
6
哈沃克夫斯基 发表于 2017-12-8 13:26:23 | 显示全部楼层 |阅读模式
目前只知道matplot这个库,但plot出的图不能在图上点选某个点的数值,应该只能看某个点的大概位置。想像matlab 的figure的data cursor一样,可以在图上点一下,获得该点的准确坐标值。
回复

使用道具 举报

2

主题

219

帖子

219

积分

版主

Rank: 7Rank: 7Rank: 7

积分
219

热心会员默默耕耘优秀版主

剑心无痕 发表于 2017-12-8 14:23:04 | 显示全部楼层
本帖最后由 剑心无痕 于 2017-12-8 14:35 编辑

要是希望展示的好看,可以考虑用python当后端(django,flask,tornado等),数据传给前端,前端用echarts展示,http://echarts.baidu.com/demo.html#scatter-anscombe-quartet

当然也可以用https://github.com/yufeiminds/echarts-python,不过我没用过,echarts示例比较多,python这个额。。。

回复 支持 反对

使用道具 举报

2

主题

6

帖子

6

积分

贫民

积分
6
哈沃克夫斯基  楼主| 发表于 2017-12-8 15:54:03 | 显示全部楼层
额,我这个不是为了展示好看,是测试分析时用的。之前是用matlab做的——先把数据点画成xy坐标图,然后从上边找到感兴趣区域的一个点,然后记下这个坐标,把坐标输入到预先编写的函数里,然后这个函数会返回该点之后一段时间内的一段数据。现在用python的matplotlib,找感兴趣点的坐标就不好找了,总找不准。
回复 支持 反对

使用道具 举报

3

主题

278

帖子

278

积分

侠客

积分
278

热心会员

uitb 发表于 2017-12-8 16:21:19 | 显示全部楼层
matplotlib应该可以做到你的要求
参考: Dream__TT的博客:python中Matplotlib库显示界面中进行鼠标交互绘制操作 (百度到的,网址在下面,论坛要审核网址,比较慢,所以截图的)
QQ截图20171208161655.png
下面代码是根据这个博客的内容整理的,实测可以实现鼠标交互,他的有点点乱,貌似也是从那个地方复制粘贴的,当然这个代码肯定不满足你的要求,不过可以参考,你就自己去实现了
  1. #coding=utf-8
  2. import matplotlib.pylab as plt
  3. import numpy as np

  4. def OnClick(event):  
  5.     global Coords1x,Coords1y  
  6.     global Coords3x,Coords3y  
  7.     #ax = plt.gca()  
  8.     if event.button ==1:  
  9.         Coords1x = event.xdata  
  10.         Coords1y = event.ydata  
  11.     if event.button == 3:  
  12.         Coords3x = event.xdata  
  13.         Coords3y = event.ydata  
  14. def OnMouseMotion(event):  
  15.     global Coords2x,Coords2y,x1,y1  
  16.     if event.button == 1:  
  17.         Coords2x = event.xdata  
  18.         Coords2y = event.ydata  
  19.         x1 = [Coords1x,Coords2x]  
  20.         y1 = [Coords1y,Coords2y]  
  21.         ax = plt.gca()  
  22.         lines = ax.plot(x1,y1,picker = 20)  
  23.         ax.figure.canvas.draw()  
  24.         #删除之前的线条,进行更新  
  25.         l = lines.pop(0)  
  26.         l.remove()  
  27.         del l  
  28.     elif event.button == 3:  
  29.         Coords4x = event.xdata  
  30.         Coords4y = event.ydata  
  31.         x2 = [Coords3x,Coords4x]  
  32.         y2 = [Coords3y,Coords4y]  
  33.         ax1 = plt.gca()  
  34.         #lines = ax1.plot(x1,y1,picker = 5)  
  35.         lines1 = ax1.plot(x2,y2,picker = 20)  
  36.         ax1.figure.canvas.draw()  
  37.         #删除之前的线条,进行更新  
  38.         l = lines1.pop(0)  
  39.         l.remove()  
  40.         del l
  41. fig = plt.figure(dpi=120)
  42. fig.canvas.mpl_connect('button_press_event',OnClick)  
  43. fig.canvas.mpl_connect('motion_notify_event',OnMouseMotion)
  44. fig.show()
复制代码

test.py

1.4 KB, 下载次数: 0

回复 支持 反对

使用道具 举报

2

主题

6

帖子

6

积分

贫民

积分
6
哈沃克夫斯基  楼主| 发表于 2017-12-8 21:23:55 | 显示全部楼层
uitb 发表于 2017-12-8 16:21
matplotlib应该可以做到你的要求
参考: Dream__TT的博客:python中Matplotlib库显示界面中进行鼠标交互绘 ...

多谢多谢,原来matplotlib可以进行鼠标交互,周末研究一下
回复 支持 反对

使用道具 举报

0

主题

956

帖子

956

积分

圣骑士

积分
956
sheeboard 发表于 2017-12-11 05:36:40 | 显示全部楼层
搜matplotlib pick event就有的demo,详细点的搜Interactive Applications using Matplotlib这本书。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表