Django - Скрытие легенды в Highcharts из сценария Python
Мне нужна ваша помощь для небольшого проекта, который я делаю с Django и Highcharts.js.
Моя цель: скрыть легенду на графике Highcharts из моего скрипта views.py
В моем файле views.py мне удалось правильно построить различные типы графиков. Но я не могу скрыть легенду из файла views.py.
Для примера я позаимствовал код из этого руководства django-highcharts-example в Github.
Вот пример кода для воспроизведения поведения скрипта:
views.py
def ticket_class_view_3(request):
dataset = Passenger.objects \
.values('ticket_class') \
.annotate(survived_count=Count('ticket_class', filter=Q(survived=True)),
not_survived_count=Count('ticket_class', filter=Q(survived=False))) \
.order_by('ticket_class')
categories = list()
survived_series_data = list()
not_survived_series_data = list()
for entry in dataset:
categories.append('%s Class' % entry['ticket_class'])
survived_series_data.append(entry['survived_count'])
not_survived_series_data.append(entry['not_survived_count'])
survived_series = {
'name': 'Survived',
'data': survived_series_data,
'color': 'green'
}
not_survived_series = {
'name': 'Survived',
'data': not_survived_series_data,
'color': 'red',
'showInLegend': "false" }
chart = {
'chart': {'type': 'column'},
'title': {'text': 'Titanic Survivors by Ticket Class'},
'xAxis': {'categories': categories},
'series': [survived_series, not_survived_series],
'plotOptions': {'column': {'showInLegend': 'false'}}
}
dump = json.dumps(chart)
return render(request, 'ticket_class_3.html', {'chart': dump})
html, в котором я импортирую Highcharts.js и создаю графики.
ticket_class_3.html
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Django Highcharts Example</title>
</head>
<body>
<a href="{% url 'home' %}">Return to homepage</a>
<div id="container"></div>
<script src="https://code.highcharts.com/highcharts.src.js"></script>
<script>
Highcharts.chart('container', {{ chart|safe }});
</script>
</body>
</html>
Я попытался скрыть легенду, как это сделано в приведенном выше примере кода в файле views.py
'plotOptions': {'column': {'showInLegend': 'false'}}
Я также попробовал это при создании серии с тем же результатом: легенда все еще появляется.
not_survived_series = {
'name': 'Survived',
'data': not_survived_series_data,
'color': 'red',
'showInLegend': "false"}
Однако, если я добавляю эту опцию showInLegend в html-код, она работает правильно. Но я хотел бы иметь возможность сделать это из Python. Возможно ли это, не могли бы вы мне помочь?
Если вам нужен пример, более простой в исполнении, дайте мне знать, и я постараюсь его подготовить.
Я уже нашел ошибку в своем коде. Похоже, что когда вы настраиваете графики из Python и вам нужно объявить булево значение, вы должны объявить его как True/False, а не как "true" или "false".
Чтобы скрыть легенду в моем коде, я должен заменить 'plotOptions': {'column': {'showInLegend': "false"}} на 'plotOptions': {'column': {'showInLegend': False}}.
def ticket_class_view_3(request):
dataset = Passenger.objects \
.values('ticket_class') \
.annotate(survived_count=Count('ticket_class', filter=Q(survived=True)),
not_survived_count=Count('ticket_class', filter=Q(survived=False))) \
.order_by('ticket_class')
categories = list()
survived_series_data = list()
not_survived_series_data = list()
for entry in dataset:
categories.append('%s Class' % entry['ticket_class'])
survived_series_data.append(entry['survived_count'])
not_survived_series_data.append(entry['not_survived_count'])
survived_series = {
'name': 'Survived',
'data': survived_series_data,
'color': 'green'
}
not_survived_series = {
'name': 'Survived',
'data': not_survived_series_data,
'color': 'red' }
chart = {
'chart': {'type': 'column'},
'title': {'text': 'Titanic Survivors by Ticket Class'},
'xAxis': {'categories': categories},
'series': [survived_series, not_survived_series],
'plotOptions': {'column': {'showInLegend': False}}
}
dump = json.dumps(chart)
return render(request, 'ticket_class_3.html', {'chart': dump})
Предлагаю закрыть эту тему.