Большое спасибо! Это работает сейчас! Следуйте коду:
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.lang import Builder
import matplotlib.pyplot as plt
import matplotlib
matplotlib.use("module://kivy.garden.matplotlib.backend_kivy")
from kivy.garden.matplotlib import FigureCanvasKivyAgg
from kivy.uix.widget import Widget
plt.plot([1,23,2,4])
plt.ylabel("alguns numeros legais")
class Sensores(Screen):
pass
class Grafico(Screen):
def on_enter(self, *args):
box = BoxLayout()
box.add_widget(FigureCanvasKivyAgg(plt.gcf()))
self.add_widget(box)
class Menu(ScreenManager):
pass
presentation = Builder.load_file('sensor.kv')
class sensor(App):
def build(self):
return presentation
if __name__ == "__main__":
sensor().run()
KV LANG
#:kivy 1.9.1
Menu:
Sensores:
Grafico:
name: 'grafico'
<Sensores>
name: 'sensores'
BoxLayout:
Button:
text: "Sensor 01"
on_release:
root.manager.current = 'grafico'
<Grafico>
name: 'grafico'
Реализация интерфейса ChartMouseListener предоставит Вам ChartMouseEvents, когда пользователь нажмет на диаграмму. ChartEntity доступен от ChartMouseEvent, чтобы дать Вам определенную информацию о том, на что нажали.
Я полагаю, что существует демонстрация, показывающая, как получить события от нажатия мыши диаграммы в Руководстве разработчика JFreeChart.
См. этот метод в классе JFreeChart:
public BufferedImage createBufferedImage(int width, int height,
ChartRenderingInfo info)
Вы передаете экземпляр ChartRenderingInfo, который можно использовать позже для получения информации о различных частях с помощью кода как это:
ChartEntity entity = info.getEntityCollection().getEntity(x, y);
Посмотрите javadoc для ChartRenderingInfo для другой информации, это доступно там.