【问题标题】:Adding color under a curve, with AxesSubplot object (matplotlib & tkinter)使用 AxesSubplot 对象(matplotlib 和 tkinter)在曲线下添加颜色
【发布时间】:2017-08-10 17:32:23
【问题描述】:

我正在使用 matplotlib 模块在 tkinter 窗口中绘制图形。 我正在使用 AxesSubplot 对象来配置图形的样式。

我的问题是:如何使用此对象(AxesSubPlot 对象)在图形曲线下绘制颜色? 这是我用来配置和绘制图形的代码:

def graph_handle(self):

    canvas = matplotlib.backends.backend_tkagg.FigureCanvasTkAgg(self.__fig, master=self.__SettingsFrame)
    canvas.show()
    canvas.get_tk_widget().pack(side=BOTTOM, fill=BOTH, expand=True)

    self.__axes = self.__fig.add_subplot(1,1,1,axisbg='#221E1E')
    self.__axes.plot([0])
    self.__axes.spines['bottom'].set_color('black')
    self.__axes.spines['top'].set_color('white')
    self.__axes.spines['left'].set_color('#221E1E')
    self.__axes.spines['right'].set_color('#221E1E')
    self.__axes.xaxis.label.set_color('#221E1E')
    self.__axes.tick_params(axis='x', colors='black')
    self.__axes.tick_params(axis='y', colors='#221E1E')

    self.__fig.gca().clear()
    self.__fig.gca().plot([0], [0])
    self.__fig.canvas.draw()

当然,我在代码和其他东西中有 tkinter 设置,如果您认为相关,请在 cmets 中写下,我会添加。

谢谢。

编辑: 到目前为止,代码提供了这个图表: 我想在曲线下添加颜色(在曲线和下轴之间)(抱歉画的不好,这只是一个演示):

编辑2:

这是我在要绘制的数组更新时调用的函数(即,当我需要更新图形时,因为要绘制的数组中的值比之前更多):

def update_plot(self, txnamount):

    self.__GraphPlot[0].append(self.__TransactionsCurrently)
    self.__GraphPlot[1].append(self.__WalletBalance+txnamount)

    self.__axes.fill_between(self.__GraphPlot[0], self.__GraphPlot[1], facecolor="yellow")

    self.__fig.gca().clear()
    self.__fig.gca().plot(self.__GraphPlot[0], self.__GraphPlot[1], color="white", linewidth=0.8)
    self.__fig.canvas.draw()

【问题讨论】:

    标签: python matplotlib graph tkinter tkinter-canvas


    【解决方案1】:

    您需要使用Axes.fill_betweenmatplotlib page 上有一个很好的例子。

    在这种情况下你会使用

    self.__axes.fill_between(x,y, facecolor='yellow')
    

    其中xy 是要绘制的数组。

    【讨论】:

    • 它不起作用。我在同一个函数中添加了这一行,但什么也没发生(我的程序中的 x,y 是位置列表,我尝试像您一样将它们放入函数中,并且还尝试了:np.asarray(x),np.asarray (y) 仍然没有发生)。我还尝试将这条线放在更新绘图的函数中,但仍然没有发生任何事情(我将使用更新数组添加更新图形的函数来绘图,到我上面的问题,请检查是否有问题)。
    • 在绘制到坐标轴后调用axes.clear() 是没有意义的。这将简单地删除新添加的fill_between 图。
    • 对,我不知道为什么我把这条线放在那里..谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 2016-10-17
    • 1970-01-01
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多