Создание динамического графика из django с помощью chart.js
Я новичок в Django. В настоящее время я занимаюсь анализом настроений в пользовательских твитах в реальном времени через Twitter API. Мне удалось провести анализ и отобразить настроения. Теперь я хочу визуализировать настроения с помощью диаграмм в моем приложении Django (возможно, гистограммы или круговой диаграммы), но не знаю, как.
Я думал использовать Chart.js, чтобы сделать его отзывчивым, но большинство примеров используют статические данные, поэтому мне не удалось интегрировать мои данные, которые я извлек из Twitter API, с chart.js.
Это скриншот моей веб-страницы. Таблица представляет собой извлеченные твиты с соответствующими настроениями. Однако гистограмма - это просто статические данные. Я не знаю, как преобразовать ее в json.
это моя views.py
from django.http.response import JsonResponse
from django.shortcuts import render, redirect, HttpResponse
from .forms import Sentiment_Typed_Tweet_analyse_form
from .sentiment_analysis_code import sentiment_analysis_code
from .forms import Sentiment_Imported_Tweet_analyse_form
from .tweepy_sentiment import Import_tweet_sentiment
from django.contrib.auth.decorators import login_required
from django.contrib import messages
def sentiment_analysis_import(request):
if request.method == 'POST':
form = Sentiment_Imported_Tweet_analyse_form(request.POST)
tweet_text = Import_tweet_sentiment()
analyse = sentiment_analysis_code()
if form.is_valid():
handle = form.cleaned_data['sentiment_imported_tweet']
# messages.info(request, 'It might take a while to load the data.')
if handle[0]!='#':
list_of_tweets = tweet_text.get_hashtag(handle)
list_of_tweets_and_sentiments = []
for i in list_of_tweets:
list_of_tweets_and_sentiments.append((i,analyse.get_tweet_sentiment(i)))
args = {'list_of_tweets_and_sentiments':list_of_tweets_and_sentiments, 'handle':handle}
return render(request, 'home/sentiment_import_result_hashtag.html', args)
if handle[0]=='#':
list_of_tweets = tweet_text.get_hashtag(handle)
list_of_tweets_and_sentiments = []
for i in list_of_tweets:
list_of_tweets_and_sentiments.append((i,analyse.get_tweet_sentiment(i)))
args = {'list_of_tweets_and_sentiments':list_of_tweets_and_sentiments, 'handle':handle}
return render(request, 'home/sentiment_import_result_hashtag.html', args)
else:
form = Sentiment_Imported_Tweet_analyse_form()
return render(request, 'home/sentiment_import.html')
def get_data(request, *args, **kwargs):
def get_data(request, *args, **kwargs):
sentiment_analysis_import(args)
data = {
args
}
return JsonResponse('home/sentiment_import_result_hashtag.html', data)
Это мой HTML
Может ли кто-нибудь помочь мне, как связать мои твиты настроений с графиком? Я сейчас так запутался...
Пожалуйста, дайте мне знать, если вам нужны другие файлы/код.
В большинстве случаев Chart.js исключает либо массив, либо вызов api в формате JSON.
Если вы используете Django, вы можете создать переменную, которая будет использоваться в шаблоне и массиве данных, например :
Sentiment.filter(neutral=True).count() # return the number based on a specific filter
Передайте его в переменную и в вашем шаблоне в массиве данных :
data: [{{neutral_sentiment}}, {{positive_sentiement}}, {{negative_sentiment}}],
-> переменные, содержащие число, которое будет использоваться для построения графика
Я делаю так в большинстве случаев, это хорошо работает, если ваши данные не сложные и вы не выполняете тысячи запросов.