Django中使用pyechart的一些设置

Django中使用pyechart的一些设置

1.固定颜色、根据数据作多条线、线条样式

需要先自行选择颜色的RGB放入列表,在line.add_yaxis是设置 color=color_list[num] 即可

color_list = [      # 选定颜色
    "#FA8072", "#EEE8AA", "#FF00FF", "#7B68EE", "#1E90FF", "#FF1493", "#B0C4DE",
]

result_dict = {'aa':[1,2,3], 'bb':[4,5,6]}      # 测试数据

for key, value in result_dict.items():      # 对字典中的每一个键值对做一条线
        count = count + 1   # 每次循环确保颜色改变
        line.add_yaxis(
            series_name=key
            y_axis=value,
            linestyle_opts=opts.LineStyleOpts(width=1.5),   # 设置折线粗细
            label_opts=opts.LabelOpts(is_show=False),       # 设置折现上不显示标签
            is_symbol_show=False,       # 设置为平滑曲线
            color=color_list[count]     # 设置颜色
        )

2.图例更改(图形、间隙、对其、布局)

line.set_global_opts(
    legend_opts=opts.LegendOpts(
                item_gap=0,         # 图例每项之间的间隔。横向布局时为水平间隔,纵向布局时为纵向间隔
                item_width=20,      # 图例中图形的长度
                item_height=10,     # 图例中图形的高度
                pos_left='70%',     # 图例组件离容器左侧的距离,可以是及具体像素值,也可以是百分比
                pos_top='15%',      # 图例组件离容器上侧的距离,可以是及具体像素值,也可以是百分比
                orient='horizontal',# 图例列表的布局朝向
                align='auto'        # 自动对齐
            ),
)

3.布局更改(使用Grid)

<div id="main" style="width:1000; height:300px;"></div>     # 实际测试是html中的长和宽起实际作用
line = Line(
        init_opts=opts.InitOpts(
            width='800px',      # 该处设置的长款对显示没有实际影响
            height='600px'
        )
    )
grid = Grid()
grid.add(line, grid_opts=opts.GridOpts(pos_left='4%', pos_right='30%')) # 设置距离容器距离

4.区域缩放(滚动条、滚轮缩放)

line.set_global_opts(
        datazoom_opts=[
            opts.DataZoomOpts(range_start=0, range_end=100),        # 设置底部缩放条
            opts.DataZoomOpts(type_="inside", range_start=0, range_end=100),    # 设置图内滚轮可缩放
        ],
    )

5.整合代码

index.html:

<div id="main" style="width:1000; height:300px;"></div>
<script>
var chart = echarts.init(document.getElementById('main'), 'white', {renderer: 'canvas'});
        $(
            function () {
                fetchData(chart);
            }
        );
        function fetchData() {
            $.ajax({
                type: "GET",
                url: "line/",
                dataType: 'json',
                success: function (result) {
                    chart1.setOption(result.data);
                }
            });
        }
</script>

views.py:

color_list = [
    "#FA8072", "#EEE8AA", "#FF00FF", "#7B68EE", "#1E90FF", "#FF1493", "#B0C4DE",
]

result_dict = {'aa':[1,2,3], 'bb':[4,5,6]}

def line_base(request) -> str:
    line = Line(
        init_opts=opts.InitOpts(
            width='800px',
            height='600px'
        )
    )
    line.add_xaxis(['2002','2003','2004'])
    for key, value in result_dict.items():
        count = count + 1
        line.add_yaxis(
            series_name=key
            y_axis=value,
            linestyle_opts=opts.LineStyleOpts(width=1.5),
            label_opts=opts.LabelOpts(is_show=False),
            is_symbol_show=False,
            color=color_list[count]
        )
    line.set_global_opts(
        title_opts=opts.TitleOpts(title="Line Test"),
        tooltip_opts=opts.TooltipOpts(trigger="axis"),
        yaxis_opts=opts.AxisOpts(
            type_="value",
            axistick_opts=opts.AxisTickOpts(is_show=True),
            splitline_opts=opts.SplitLineOpts(is_show=True),
        ),
        xaxis_opts=opts.AxisOpts(type_="category", boundary_gap=False),

        legend_opts=opts.LegendOpts(
            item_gap=0,
            item_width=20,
            item_height=10,
            pos_left='70%',
            pos_top='15%',
            orient='horizontal',
            align='auto'
        ),
        datazoom_opts=[
            opts.DataZoomOpts(range_start=0, range_end=100),
            opts.DataZoomOpts(type_="inside", range_start=0, range_end=100),
        ],
    )

    grid = Grid()
    grid.add(line, grid_opts=opts.GridOpts(pos_left='4%', pos_right='30%'))
    return grid.dump_options_with_quotes()

class ChartView_line(APIView):
    def get(self, request, *args, **kwargs):
        return JsonResponse(json.loads(line_base(request)))
        
class IndexView(APIView):
    def get(self, request, *args, **kwargs):
        return render(request, "index.html")

urls.py

urlpatterns = [
    path('index/', views.IndexView.as_view(), name='index'),
    path('index/line/', views.ChartView_line.as_view(), name='line'),
]
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值