Как добавить сюжет к фигуре в matplotlib?
Я использую matplotlib с django. Я пытаюсь создавать гистограммы.
Я следовал за поваренной книгой, но я только что получил серую прямоугольную коробку.
Теперь я использую следующий код, и у меня есть заголовок и оси.
Как я могу добавить гистограмму к рисунку? В настоящее время фактических данных внутри осей нет.
Вот мой графический код:
from matplotlib.backends.backend_agg import FigureCanvasAgg
from matplotlib.figure import Figure
import matplotlib.pyplot as plt
class Chart(object):
## Creates a bar chart of the given data
@staticmethod
def bar(data):
figure = Figure(figsize=(6,6))
ax = figure.add_axes([0.1, 0.1, 0.8, 0.8])
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
fracs = [15, 30, 45, 10]
explode=(0, 0.05, 0, 0)
plt.pie(fracs, explode=explode, labels=labels, autopct='%1.1f%%', shadow=True)
figure.suptitle('Raining Hogs and Dogs', fontsize=14)
canvas = FigureCanvasAgg(figure)
return canvas
На мой взгляд, у меня есть:
canvas = Chart.bar(results)
# turn the returned canvas into an HTTP response
response=HttpResponse(content_type='image/png')
canvas.print_png(response)
return response
1 ответ:
fig = Figure() fig = Figure(facecolor='white', edgecolor='white') ax = fig.add_subplot(1,1,1) x = matplotlib.numpy.arange(0, len(dic.keys())) ind = matplotlib.numpy.arange(len(dic.values())) height = 0.8 ax.bar(ind, dic.values(), width, color=colors) ax.set_xticks(ind + width / 2.0) ax.set_xticklabels(dic.keys()) padding = 0.2 ax.set_xlim([x.min() - padding, x.max() + width + padding]) canvas = FigureCanvas(fig) response = django.http.HttpResponse(content_type='image/png') canvas.print_png(response) fig.savefig(filename)
Это создаст гистограмму и сохранит изображение. Просто нужно вызвать функцию в свои представления. и откройте изображение в шаблоне. Я передал словарь этой функции (dic), но вы можете передать список, это зависит от вас.
В этом случае ключи - это ось x,а значения-ось Y.