当前位置: 首页 > 知识库问答 >
问题:

饼图查询集

赵健柏
2023-03-14

我想我只是在这里犯了一个简单的错误,但我似乎无法解决它。我试图创建一些假数据,并通过不同类型的用户分析,然后我会放入饼图。下面是我的models.py:

from django.db import models

import factory
import factory.django
import factory.fuzzy
from datetime import datetime
from django.core.validators import MinValueValidator, MaxValueValidator
from faker import Faker
from faker.providers import BaseProvider
import random


class User(models.Model):
    name = models.CharField(max_length=64)
    address = models.CharField(max_length=128)
    phone_number = models.CharField(max_length=32)
    access_date = models.DateTimeField(default=datetime.now(), blank=True)
    session_duration = models.IntegerField(default = 0, validators=[MinValueValidator(0),
                               MaxValueValidator(5)])
    traffic_source = models.CharField(max_length=32)
    created_account = models.BooleanField(default=True)
    paid_customer = models.BooleanField(default=True)
    user_type = models.CharField(max_length=128, default = 'all_others')


class UserFactory(factory.django.DjangoModelFactory):
    class Meta:
        model = User

    name = factory.Faker('name')
    address = factory.Faker('address')
    phone_number = factory.Faker('phone_number')
    access_date = factory.Faker('date')
    session_duration = factory.Faker('random_int')
    traffic_source = factory.fuzzy.FuzzyChoice(['Google', 'Facebook'])
    created_account = factory.Faker('pybool')
    paid_customer = factory.Faker('pybool')
    user_type = factory.fuzzy.FuzzyChoice(['registered', 'paid', 'all_others'])

和我的views.py:

from django.shortcuts import render

from django.db.models import Sum
from django.http import JsonResponse

from mysite.models import User


def home(request):
    return render(request, 'home.html')


def pie_chart(request):
    labels = [User.user_type]
    registered_user = User.objects.filter('registered')
    paid_user = User.objects.count('paid')
    all_others = User.objects.count('all_others')
    data = [registered_user, paid_user, all_others]

    #queryset = User.objects.order_by('-access_date')
    #for user in queryset:
        #labels.append(user.user_type)
        #data.append(user.user_count)

    return render(request, 'pie_chart.html', {
        'labels': labels,
        'data': data,
    })

共有1个答案

凌黎明
2023-03-14

谢谢大家的意见。我可以通过对views.py进行以下更改来解决这个问题。请随意留下其他评论,但我现在将关闭它。

from django.shortcuts import render

from django.db.models import Sum
from django.http import JsonResponse

from mysite.models import User


def home(request):
    return render(request, 'home.html')


def pie_chart(request):

    queryset = User.objects.order_by('-access_date')

    total_registered = 0
    total_paid = 0
    total_others = 0

    labels = ['total_registered', 'total_paid', 'total_others']

    for user in queryset:

        if user.created_account == 1:
            total_registered = total_registered + 1

        elif user.paid_customer == 1:
            total_paid = total_paid + 1

        elif user.created_account == 0 and user.paid_customer == 0:
            total_others = total_others + 1


    data = [total_registered, total_paid, total_others]

    return render(request, 'pie_chart.html', {
        'labels': labels,
        'data': data,
    })
 类似资料:
  • 饼图 饼图的切片大小由 metrics 聚合决定,下列聚合可用于饼图: Count count 聚合返回所选索引模式中元素的原始数量。 Sum sum 聚合返回一个数值型字段的总和。从下拉框选择一个字段。 Unique Count cardinality 聚合返回一个字段中唯一值的数量。从下拉列表选择一个字段。 在 Custom Label 字段中输入一个字符串来修改显示标签。 桶 聚合用于决定从

  • 饼图以扇区的形式显示每一个数值相对于总数值的大小。 图4-9 Highcharts 饼图图 柱状图相关的配置参考 API 文档: 饼图配置:针对当前数据列有效 饼图数据列配置 :针对当前页面的所有饼图数据列有效 一、饼图的一些特性 1、环形图 环形图可以让饼图展示多个系列的数据。在 Highcharts 中,只需要指定数据列的大小 (size) 和内部大小(innerSize) 就可以创建环形饼图

  • 主要内容:实例,实例,实例前面的章节我们已经学会了使用 ECharts 绘制一个简单的柱状图,本章节我们将绘制饼图。 饼图主要是通过扇形的弧度表现不同类目的数据在总和中的占比,它的数据格式比柱状图更简单,只有一维的数值,不需要给类目。因为不在直角坐标系上,所以也不需要 xAxis,yAxis。 实例 myChart.setOption({ series : [ { name: '访问来源', type: 'pie', //

  • 饼图显示了分段数据。它可以显示度量对维度中不同成员的贡献。饼的角度决定了测量值。可以将不同的颜色分配给饼来表示维度中的成员。 饼图表示具有不同大小和颜色的圆形切片形式的数据。标记这些切片,并且对应于每个切片的数字也在图表中表示。 可以从“显示我(Show Me)”窗格中选择饼图选项以创建饼图。 例如,考虑一个有数据源:sample-superstore,选择一个维度和一个度量来创建一个简单的饼图。

  • 主要内容:什么是JFreeChart 饼图,JFreeChart 饼图的示例什么是JFreeChart 饼图 饼图是一个圆形图,它被分成多个扇区,其中每个扇区的面积代表数据的大小。 下图显示了 JFreeChart 库中包含的饼图的一些演示版本: JFreeChart 饼图的示例 让我们以学生的考试分数分布作为样本数据。 成绩范围 学生人数 80-100 120 60-79 80 40-59 20 20-39 7 0-19 3 以下代码根据上述示例数据创建饼图:  输出结

  • 饼图很像堆叠图,只是它们位于某个时间点。 通常,饼图用于显示部分对于整体的情况,通常以%为单位。 幸运的是,Matplotlib 会处理切片大小以及一切事情,我们只需要提供数值。 import matplotlib.pyplot as plt slices = [7,2,2,13] activities = ['sleeping','eating','working','playing'] col