kivy garden Grap xmin xmax update(real time)

时间:2016-06-26 16:37:24

标签: graph kivy

有没有办法在kivy garden中更新Graph的xmin和xmax?

目前,我的xmin是0,xmax是10,我正在绘制一个包含(x,y)点的列表。 y从0开始,每秒递增一次,x只是一个计算迭代次数的计数器。所以一旦x是>在图10中,图表不是实时更新的,因此x轴不会像1-11和下一个第二个2-12和下一个3-13等等所以我总是显示10个值但是grap是'live'。

如何在kivy garden Graph中实现它?

   graph = Graph(
                    xlabel='Iteration',
                    ylabel='Value',
                    x_ticks_minor=1,
                    x_ticks_major=5,
                    y_ticks_major=1,
                    y_grid_label=True,
                    x_grid_label=True,
                    padding=5,
                    xlog=False,
                    ylog=False,
                    x_grid=True,
                    y_grid=True,
                    xmin=0,
                    xmax=10,
                    ymin=0,
                    ymax=11,
                    **graph_theme)

3 个答案:

答案 0 :(得分:0)

从未使用过此花,请尝试#!/bin/bash shopt -s failglob sourcedir=/Users/georgi/Loopback_projects/ESPC/common/models targetdir=/Users/georgi/AndroidStudioProjects/ESPC_Retrofit/app/src/main/assets cp -v "$sourcedir"/*.json "$targetdir" 。如果它不起作用,则代码可能具有该变量的其他名称,因为cp中的graph.xmin = <something>仅是关键字参数。尝试查看其xmin,看到有什么价值后,尝试通过Graph(...)访问它。如果它不是局部变量,那么它应该可以工作。

但是,这只说明如何手动更改 。如果除了__init__()之外还有更多代码,请粘贴它,可能存在问题。否则,您可以尝试在花园的回购中报告故障图。

答案 1 :(得分:0)

根据“garden.graph”库中的代码,您可以调用图形实例来设置xmax,xmin,ymax和ymin的属性。

例如,我将ymax的属性设置为我的数据集的最大值:

Class Test(Widget):
    data = #list of datapoints
    graph_test = ObjectProperty(None)
    def setgraph:
        plot = MeshLinePlot(color=[1, 0, 0, 1])
        self.graph_test.ymax=max(data[1])
         plot.points = [(data[0][i], data[1][i]) for i in range(0,500)]
         self.graph_test.add_plot(plot)

我还有一个包含以下内容的.kv文件

#:kivy 1.0.9
<Test>:
    graph_test : graph_test
    Graph:
        id: graph_test
        plot: MeshLinePlot
        xlabel:'X'
        ylabel:'Y'
        x_ticks_minor:1000000000000
        x_tics_major:5000000000000
        y_ticks_major:1000
        y_grid_label:True
        x_grid_label:True
        padding:5
        x_grid:True
        y_grid:True
        xmin:123413241234
        xmax:123412341234
        ymin:2000
        ymax:15000
        pos: 0, 0
        size: root.width , root.height

答案 2 :(得分:0)

一个老问题,但是我正在用一些Kivy Graph来做到这一点,而不是重置XMin和XMax(这意味着只要图形在“实时”运行,这些数字就会一直计数),我们来移动数据点,然后不理会X范围。

我们构建了一个简单的LiveGraph类来包装它,效果很好并且性能相对较高。

class LiveGraph(Graph):
   def __init__(self, num_data_points=50, **kwargs):
      super(LiveGraph, self).__init__(**kwargs)
      self._num_data_points = num_data_points
      self.xmin = 0
      self.xmax = num_data_points
      build_chart()

   def build_chart(self):
      plot = MeshLinePlot()

      # Initialize with empty Y values to start with
      plot.points = [(x,0) for x in range(self._num_data_points)

   # I tested a number of ways to do this - this ended up being
   # the fastest. 
   def add_point(self, point_value):
      new_points = self.plots[0].points
      new_points = [(i, new_points[i+1][1]) for i in range(self._num_data_points - 1)]
      new_points.append([len(new_points) - 1, new_value])
      self.plots[0].points = new_points