【发布时间】:2017-07-22 17:53:41
【问题描述】:
我想自定义我的水平条形图。我的图表是这样的。
但我想要这样的图表。
我使用 django 从后端获取值和级别。这里的条形颜色与person 不同。
我的设置是:
Models.py
class Publication(models.Model):
person = models.ForeignKey( Person, on_delete=models.CASCADE )
publisher = models.CharField(max_length=300, blank=True)
publication_Date = models.CharField(max_length=4, blank=True)
def __str__(self):
return self.publisher
我通过这个方法获得价值和等级:
def publication_by_publisher(self):
user_id = self.request.user.id
query = Person.objects.get(id=10)
publisher = query.publication_set.values('publisher').values('publication_Date').annotate(Count('publication_Date'))
level, value = [str(x.get('publication_Date')) for x in publisher], [y.get('publication_Date__count') for y in publisher]
context = {
'ob': query,
'publisher': publisher,
'level': level,
'value': value
}
return context
图表设置:
var ctx = document.getElementById("publisher");
var data = {
labels: {{ publisher.level|safe }},
datasets: [{
label: 'Publications by publisher',
backgroundColor: [
'rgb(77, 148, 255)',
'rgb(179, 0, 0)',
'rgb(57, 230, 0)',
'rgb(184, 0, 230)',
],
data: {{ publisher.value|safe }},
scaleSteps : 10,
}]
};
$('#publisher').css('background-color', '#2f3133');
var publisher = new Chart(ctx, {
type: 'horizontalBar',
data: data,
options: {
scales: {
yAxes: [{
barThickness : 35
}],
xAxes: [{
ticks: {
beginAtZero: true,
suggestedMin: 0,
suggestedMax: 10,
scaleSteps: 5,
},
}
]
}
}
});
我怎么会这样?
【问题讨论】:
-
您需要为每个发布者设置 3 个单独的值。你现在有吗?
-
是的,我有 3 个单独的值。
-
其实3年了,但是假设2015年有2个不同的出版商,那么单杠颜色就会改变。
标签: python django bar-chart chart.js