Переместите центр диапазона, чтобы щелкнуть позицию, не отображающую диапазон при нажатии на подграфик с показанным диапPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Переместите центр диапазона, чтобы щелкнуть позицию, не отображающую диапазон при нажатии на подграфик с показанным диап

Сообщение Anonymous »

Я создал подсюжет из двух сюжетов. Выбор диапазона в обоих подграфиках работает нормально. Щелчок по верхнему подграфику (увеличенный график) нормально сдвигает оба представления, но при щелчке по нижнему графику (общее представление) выбранная область диапазона (SpanSelector) исчезает. Чего мне не хватает.
В качестве следующего шага я собираюсь навести курсор-перекрестие на верхний (увеличенный) график.
Прикрепляет пример кода:

Код: Выделить всё

import sys
import numpy as np
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
import matplotlib.pyplot as plt
from matplotlib.widgets import MultiCursor
from PyQt5.QtWidgets import QMainWindow,QVBoxLayout
from PyQt5.QtWidgets import QApplication
from PyQt5 import QtCore, QtGui, QtWidgets
from matplotlib.ticker import FuncFormatter
from matplotlib.widgets import SpanSelector
import matplotlib.ticker as ticker

class MainWindow_code_serarch(object):

def setup_code_serarch(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1024, 800)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.verticalLayoutWidget = QtWidgets.QWidget(self.centralwidget)
self.verticalLayoutWidget.setGeometry(QtCore.QRect(0, 0, 1024, 800))
self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
self.verticalLayout.setContentsMargins(0,0,0,0)
self.verticalLayout.setObjectName("verticalLayout")

self.figure = plt.figure()
self.canvas = FigureCanvas(self.figure)
self.verticalLayout.addWidget(self.canvas)
axes, axes2 = self.figure.subplots(nrows=2, sharex=True)

datacount = 100000

data_x = []
data_y = []

for i in range(1, datacount):
data_x.append(i)
if i % 250 =2:
self.line2.set_data(region_x, region_y)
ax1.set_xlim(region_x[0], region_x[-1])     #select from region start till region end...
ax1.set_ylim(-1.2,1.2)#region_y[0], region_y[-1])
self.span2.extents = (region_x[0], region_x[-1])
self.canvas.draw_idle()
self.mouse_SpanSelected = True;
else:
print('onselect_span: region too small')

self.span1.clear()
print('onselect_span end')

self.span1 = SpanSelector(
ax1,
onselect_span,
"horizontal",
useblit=True,
props=dict(alpha=0.3, facecolor="tab:red"),
interactive=True,
drag_from_anywhere=True,
grab_range = 3,
)

self.span2 = SpanSelector(
ax2,
onselect_span,
"horizontal",
useblit=True,
props=dict(alpha=0.3, facecolor="tab:red"),
interactive=True,
drag_from_anywhere=True,
grab_range = 3,
)

def onclick(event):
global ix
ix = event.xdata
print('onclick end')

def onrelease(event):
print('onrelease')
global ix, ixrel
ixrel = event.xdata

if abs(ix-ixrel) это моя проблема
[img]https://i.sstatic.net/nU5zbuPN.jpg[/img]
 

Подробнее здесь: [url]https://stackoverflow.com/questions/79279680/move-span-center-to-click-position-not-showing-range-when-clicking-in-subplot-wi[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»