Нарисуйте среднюю линию на участке - PullRequest
0 голосов
/ 15 января 2019

Я хочу нарисовать среднюю линию в моем гистограмме. Я упростил мой случай всего с шестью наборами данных для высокого и низкого. Для этих значений я создаю среднее, что легко (не показано в моем примере здесь, чтобы оно было коротким).

Но я не могу найти способ интегрировать линию в мою гистограмму, которая показывает средние значения для каждого бара.

import tkinter as Tk
import numpy as np

from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure

root = Tk.Tk()

f = Figure(figsize=(5,4), dpi=100)
ax = f.add_subplot(111)

high = (104, 109, 113, 111, 108, 114)
low = (95, 100, 109, 103, 103, 110)

ind = np.arange(6)  # the x locations for the groups
width = 0.35

rects1 = ax.bar(ind, high, width)
rects2 = ax.bar(ind, low, width)

ax.set_yticks(np.arange(90, 121, 2))
ax.set_ylim(bottom=90)

ax.legend((rects1[0], rects2[0]), ('High', 'Low'))

canvas = FigureCanvasTkAgg(f, master=root)
canvas.show()
canvas.get_tk_widget().pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)

Tk.mainloop()

1 Ответ

0 голосов
/ 15 января 2019

Вы можете использовать понимание списка, чтобы сначала вычислить среднее значение каждого набора низких и высоких баров. Затем вы можете построить его с помощью пунктирной линии, например, как показано ниже


average = [(h+l)/2. for h, l in zip(high, low)]

rects1 = ax.bar(ind, high, width)
rects2 = ax.bar(ind, low, width)
ax.plot(ind, average, '--k')

enter image description here

...