首页 > 其他分享 >Django+Echarts+Ajax动态加载横、纵坐标数据

Django+Echarts+Ajax动态加载横、纵坐标数据

时间:2024-09-24 20:02:21浏览次数:1  
标签:plot show data Django Ajax var chart1 true Echarts

前端html页面(不是重点,可以直接不看):

    <!-- 第三部分 可视化展示模块 start-->
    <div id="diff_analysis3_graphic" style="width:1200px;margin: 0 auto;margin-top:40px;">
        <div class="StatHome mainHeaderStyle">

            <div class="StatHomeContentOne" style="height:64px;width:100%;background:#17273a;">
                <p class="listHeaderStyle">expression display</p>
            </div>

            <div class="row" style="margin-top:10px;">
                <section id="intro" class="wow fadeIn" style="height:100px;z-index:0; margin:0px 0 0 0;">
                    <form>
                        <div class="form-group col-md-3">
                            <label for="tool2select_gene" style="color: #0a121c;font-size: 16px">
                                Gene Symbol:</label>
                            <br>
                            <select class="form-control" id="tool2select_gene"
                                    style="width: 100%;">
                                <option value="" class="hidden">Search or select</option>
                                <option>A2M</option>
                                <option>ABCB7</option>
                                <option>AC000120.1</option>
                                <option>AC004837.2</option>
                                <option>AC006460.2</option>
                                <option>AC011005.4</option>
                            </select>
                        </div>
                        <div class="form-group col-md-2" style="margin-top:31px;">
                            <button type="button" id="tool2btn"
                                    class="btn btn-primary">plot
                            </button>
                        </div>
                    </form>

                </section>

                <!-- 对图表的文字补充-->
                <div style="text-align: center;">
                    <p class="card-text">
                        Gene expression profiles of all tumor samples and paired normal tissues. (Bar
                        chart)
                    </p>
                    <p>
                        The height of the bar chart represents the average expression level of certain tumor types or
                        normal
                        tissues.
                    </p>
                    <p>   </p>
                </div>


                <!--为echart准备一个具备大小的dom 大小还要调整 -->
                <div id="chart1" style="width: 1000px;height: 300px;margin-left: 10px"></div>

            </div>

        </div>


    </div>
    <!--第三部分 end-->

html中的js部分(重点):

<script>

    $("#tool2btn").click(function () {
        if ($("#tool2select_gene").val() == "") {
            alert("Please select a gene.")
        } else {

            // echart初始化
            var chart1 = echarts.init(document.getElementById("chart1"));
            // 配置和数据
            var option1 = {
                title: {
                    text: 'Expression-FPKM', // 还可以有副标题subtitle

                },
                tooltip: {
                    trigger: 'axis'
                },
                legend: {
                    data: ['Tumor', 'Normal']
                },
                toolbox: {
                    show: true,
                    feature: {
                        mark: {show: true},
                        dataView: {show: true, readOnly: false},
                        magicType: {show: true, type: ['line', 'bar']},
                        restore: {show: true},
                        saveAsImage: {show: true}
                    }
                },
                calculable: true,
                xAxis: {
                    data: []
                },
                yAxis: {},
                series: [{
                    name: 'Tumor',
                    type: 'bar',
                    data: []
                }, {
                    name: 'Normal',
                    type: 'bar',
                    data: []
                }],
                // 设置横坐标滚动条
                dataZoom: [
                    {
                        show: true,
                        realtime: true,
                        start: 0,
                        end: 50
                    },
                    {
                        type: 'inside',
                        realtime: true,
                        start: 0,
                        end: 50
                    }
                ]
            }
            chart1.setOption(option1);
            chart1.showLoading(); //数据未加载完全之前先loading
            var diseases = [];    //数据集(实际用来盛放X轴坐标值)
            var tumorValue = [];    //肿瘤样本表达量(实际用来盛放Y坐标值)
            var normalValue = []; //正常样本表达量

            $.ajax({
                type: 'POST',
                dataType: 'json',
                data: {
                    symbol: $("#tool2select_gene").val(),
                },
                url: '/cuDB/analysis/differential/plot',
                success: function (plot_data) {
                    console.log(plot_data)
                    if (plot_data) {
                        for (var i = 0; i < plot_data.length; i++) {
                            diseases.push(plot_data[i].disease);
                            tumorValue.push(plot_data[i].tumor);
                            normalValue.push(plot_data[i].normal)
                        }
                        chart1.hideLoading();    //隐藏加载动画
                        chart1.setOption({        //加载数据图表
                            xAxis: {
                                data: diseases
                            },
                            series: [{
                                name: 'tumor',
                                data: tumorValue
                            }, {
                                name: 'normal',
                                data: normalValue
                            }
                            ]
                        });
                    }
                }
            });
        }
    });
</script>

后端views.py代码:

def diffAnalysisPlot(request):
    symbol = request.POST.get("symbol")
    result = list(DiffExpressionTable.objects.filter(symbol=symbol).values())
    return JsonResponse(result, safe=False)

 最冲呈现效果:

 

标签:plot,show,data,Django,Ajax,var,chart1,true,Echarts
From: https://www.cnblogs.com/isayruby/p/18429891

相关文章

  • 【开题报告】基于django+vue医院电子病历管理(论文+程序)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着医疗技术的飞速发展和医疗信息化建设的不断深入,医院电子病历管理系统已成为现代医疗体系中不可或缺的一部分。传统的纸质病历不仅存储......
  • 基于django+vue摄影交流系统【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着数字技术的飞速发展,摄影艺术已成为大众生活中不可或缺的一部分,它不仅记录着生活的点滴,更是个人情感与创意表达的重要方式。然而,在摄影......
  • 基于django+vue社会公益服务平台的设计与实现【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着社会的快速发展和人们公益意识的日益增强,社会公益活动已成为连接社会各界、促进资源合理配置与共享的重要桥梁。然而,传统公益模式在信......
  • 基于django+vue商品分析与管理系统的设计和实现【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着电子商务的迅猛发展,商品种类与数量呈爆炸式增长,企业面临着前所未有的商品管理挑战。传统的手工或简单信息化管理方式已难以满足当前复......
  • 基于django+vue热点新闻搜索系统【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,信息爆炸式增长已成为现代社会的重要特征。每日海量的新闻资讯充斥着各类媒体平台,用户如何快速、准确地从浩如烟......
  • django ORM
    安装pipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simpledjango==2.2pipinstallpymysql#django使用pymysql作为数据库连接引擎配置#__init__.py#使用pymysql替代mysqlDB作为mysql引擎importpymysqlpymysql.install_as_MySQLdb()#settings.pyDATABASES=......
  • Vue.js与Flask/Django后端配合
    Vue.js是一个流行的前端JavaScript框架,而Flask和Django是常用的Python后端框架。以下是关于Vue.js与Flask或Django后端配合的介绍:一、Vue.js的特点与优势Vue.js具有以下主要特点和优势:渐进式框架:可以根据项目需求逐步引入和扩展功能。响应式数据绑定:自动更......
  • 说一下你对ajax的理解,如何实现一个ajax请求
    ajax即Asynchronous JavascriptandXML的缩写,指的是通过javascript的异步通信,从服务器获取XML文档从中提取数据,再更新当前网页的对应部分,而不用刷新整个网页。创建Ajax请求的步骤1.创建一个XMLHttpRequest对象2.在这个对象上使用open方法创建一个Http请求,open方法所需......
  • echarts两饼图连接映射
    最近开发中,突然来了一个echarts还要很快开发出来。。要老命了,遭老罪了。。先看需求图思考了半天还是有点思路,前端画图不就是搭积木嘛。1.中间蓝色阴影部分用canvas来做2.获取容器和饼图在页面上的位置,绘制梯形3.使用2个mask作为饼图圆心,用于遮挡echarts中心位置的梯......
  • 【开题报告】基于django+vue宿舍管理系统(论文+程序)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着高校规模的不断扩大和学生人数的持续增长,宿舍管理成为了高校日常管理中的一项重要且复杂的任务。传统的宿舍管理模式往往依赖于人工记......