我想从x轴日期YYYY
中删除YYYY-MM-DD
,因为该图表显示在较小的区域。例如,2018-09-04
应该是09-04
。我不确定是否可以使用任何现有方法,有人可以帮忙吗?
我正在使用Django version 2.0
,django-chartit 0.2.9
和Python 3.7.0
。
def get_block_chart(self):
blockpivotdata = DataPool(
series=[{
'options': {
'source': Block.objects
.annotate(date=TruncDay('timestamp')) # Truncate to day and add to select list
.values('date') # Group By day
.annotate(num=Count('hash')) # Select the count of the grouping
.values('date', 'num') # select day and num
.order_by('date')
},
'terms': [
'date',
'num'
]
}]
)
return Chart(
datasource=blockpivotdata,
series_options=[{
'options': {
'type': 'line',
'stacking': False
},
'terms': {
'date': [
'num',
]
}
}],
chart_options={
'title': {
'text': 'Block Count Chart'},
'xAxis': {
'title': {
'text': 'Date'}},
'yAxis': {
'title': {
'text': 'Block'}},
'legend': {
'enabled': False},
'credits': {
'enabled': False}},
)
答案 0 :(得分:0)
后来我找到了解决方案,只是想在这里粘贴,以防有人需要。方法是使用objects.raw()
并通过SQL查询to_char(timestamp,'MM-dd') as niceday
对其进行格式化:
blockpivotdata = DataPool(
series=[{
'options': {
'source': Block.objects.raw("select 1 as hash, to_char(timestamp,'MM-dd') as niceday, "
"max(total_difficulty) as total_difficulty, "
"date(DATE_TRUNC('day', timestamp)) as date, count(hash) as num "
"from blockchain_block "
"group by DATE_TRUNC('day', timestamp),niceday order by date")
},
'terms': [
'niceday',
'num',
'total_difficulty',
]
}]
)
注意:我在这里使用PostgreSQL。 这是此解决方案的生动演示:https://grinexplorer.net