from pynput import mouse
class MyException(Exception):pass
X = []
Y = []
NumberOfMouseClicks = 0
print('Click Origin')
def on_click(x, y, button, pressed):
button = str(button)
global NumberOfMouseClicks
NumberOfMouseClicks = NumberOfMouseClicks + 1
if NumberOfMouseClicks==1:
print('Click Top Right')
if NumberOfMouseClicks==3:
print('Click data points. Right-click to end.')
X.append(x)
Y.append(y)
if button!='Button.left':
raise MyException(button)
def plot_data(X, Y, Xmin, Xmax, Ymin, Ymax):
import matplotlib.pyplot as plt
plt.plot(X,Y,'b-')
plt.xlim((Xmin, Xmax))
plt.ylim((Ymin, Ymax))
plt.show()
def main(X,Y):
with mouse.Listener(on_click=on_click) as listener:
try:
listener.join()
except MyException as e:
pass
# drop duplicates
X = X[::2]
Y = Y[::2]
# input boundaries
Xmin = float(input('Input X-min: '))
Xmax = float(input('Input X-max: '))
Ymin = float(input('Input Y-min: '))
Ymax = float(input('Input Y-max: '))
# define scales from data
origin = [X[0],Y[0]]
topRight = [X[1],Y[1]]
XminScale = origin[0]
XmaxScale = topRight[0]
YminScale = origin[1]
YmaxScale = topRight[1]
# drop extras
X = X[2:-1]
Y = Y[2:-1]
# scale
## (old_value - old_min) / (old_max - old_min) * (new_max - new_min) + new_min
Xplot = [(i - XminScale) / (XmaxScale - XminScale) * (Xmax - Xmin) + Xmin for i in X]
Yplot = [(i - YminScale) / (YmaxScale - YminScale) * (Ymax - Ymin) + Ymin for i in Y]
# print outputs
print('Origin: {}'.format([round(i, 2) for i in origin]))
print('Top Right: {}'.format([round(i, 2) for i in topRight]))
print('X: {}'.format([round(i, 2) for i in Xplot]))
print('Y: {}'.format([round(i, 2) for i in Yplot]))
# plot
plot_data(Xplot, Yplot, Xmin, Xmax, Ymin, Ymax)
if __name__ == '__main__':
main(X,Y)
Python应用实战代码-Python如何从折线图中提取数据点
版权申诉
5星 · 超过95%的资源 120 浏览量
2021-07-19
16:02:34
上传
评论 1
收藏 867KB ZIP 举报
普通网友
- 粉丝: 12w+
- 资源: 9336
最新资源
- 基于Python实现的自动化办公项目.zip
- 基于python实现的基于PyQt5和爬虫的小说阅读系统.zip
- 机械设计整经机上纱自动化sw20非常好的设计图纸100%好用.zip
- Screenshot_20240427_031602.jpg
- 网页PDF_2024年04月26日 23-46-14_QQ浏览器网页保存_QQ浏览器转格式(6).docx
- 直接插入排序,冒泡排序,直接选择排序.zip
- 在排序2的基础上,再次对快排进行优化,其次增加快排非递归,归并排序,归并排序非递归版.zip
- 实现了7种排序算法.三种复杂度排序.三种nlogn复杂度排序(堆排序,归并排序,快速排序)一种线性复杂度的排序.zip
- 冒泡排序 直接选择排序 直接插入排序 随机快速排序 归并排序 堆排序.zip
- 课设-内部排序算法比较 包括冒泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、归并排序和堆排序.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
- 3
前往页