이것이 내가 원하는 출력입니다.
위의 차트에 따르면 사용자가 3 월에서 4 월 사이에 게시물을 많이 썼다가 7 월에는 그 수가 줄었습니다.
나는 표와 원형 차트로 작업했지만 이것을 작동시킬 수 없었습니다. 다음은 이러한 목적으로 사용할 수있는 Django 모델의 샘플입니다.
class Blog(models.Model):
title = models.CharField(max_length=160)
...
created_at = models.DateTimeField(auto_now_add=True)
여기서 사용할 데이터는 created_at
필드 에서 추출 할 수 있다는 것을 알고 있지만 그 JavaScript
부분 을 수행하는 방법을 모르겠습니다 . {"blogs": Blog.objects.all()}
템플릿에서 컨텍스트를 전달하면 선 막대처럼 위에 어떻게 플로팅합니까? 도와주세요.
감사합니다.
Django에서 작업하고 있으므로이 그래프를 plotly 로 그 립니다 .
views.py에서 :
import plotly.offline as pyo
import plotly.graph_objs as go
import datetime as dt
import calendar
time_values = Blog.objects.all().order_by("created_at")
time_values = [ element.created_at for element in time_values ]
time_values = [ element.month for element in time_values ]
published_amounts = [ 1 for element in time_values ]
new_time_values = [ time_values[0] ]
published_amounts = [ 0 ]
j=0
# the cycle prevents mixing months from different years
for i in range( 1, len(time_values) ):
if time_values[i]==time_values[i-1]:
published_amounts[j] = published_amounts[j] + 1
else:
new_time_values.append(time_values[i])
published_amounts.append(1)
j=j+1
new_time_values = [calendar.month_name[element] for element in new_time_values ]
post_line = go.Scatter(
x=new_time_values,
y=published_amounts,
mode='lines+markers',
name="Published posts",
)
data = [ post_line, ]
layout = go.Layout(showlegend=True, )
fig = go.Figure(data=data, layout=layout)
plt_div = pyo.plot(fig, output_type='div')
context_dict={
"plt_div":plt_div
}
return render(request, 'your_page.html', context_dict)
그런 다음 템플릿에
{{plt_div}}
그래프를 표시 할 위치입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다