基于echarts、php、Mysql开发的数据可视化大屏

大屏效果展示

管理员进入数据可视化页面将看到数据可视化大屏。大屏内容包括两个条形图,用于统计当前网站所有用户的MBTI 16型人格分布;玫瑰图,用于展示当前网站用户MBTI四个维度,八个字母的占比;折线图,用于展示当前网站在交友论坛中周一至周如的发言数量;饼图用于展示当前网站用户的男女比例;中间的文字显示屏用于直观展示用户人数、男女比例、最稀有人格、用户活跃时间的信息。数据可视化大屏如下。

设计大屏之前完成echarts引入

 <script src="echarts.js/echarts.min.js"></script>

 大屏框架

<div class="whole">
<header>
    <h1>数据可视化大屏</h1>
</header>
<div class="screen">
    <div class="left_chart">
        <div class="left_top" id="chart" >
            
        </div>
        <div class="left_bottom" id="chart4"></div>
        

    </div>

    <div class="middle_chart">

        <div class="middle_top" >
            <h3 class="tech-display">用<br>户<br>人<br>数<br><?echo $usernum?></h3>
            <h3 class="tech-display">男<br>女<br>比<br>例<br><?echo $male?>:<?echo $female?></h3>
            <h3 class="tech-display">稀<br>有<br>人<br>格<br><?echo $minMBTI?></h3>
            <h3 class="tech-display">活<br>跃<br>时<br>间<br><?echo $maxDAY?></h3>
        </div>
        <div class="middle_bottom" id="chart1"></div>
        
    </div>

    <div class="right_chart">

        <div class="right_top" id="chart2" ></div>
        <div class="right_bottom" id="chart3"></div>
        

    </div>
</div>

</div>

大屏css样式

.whole{
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.5);
}
.screen{
   
    display: flex;
    justify-content: center;
    margin-top: 5px;
  
    
}

.left_chart{

}
.left_top{
    border: solid;
    width: 520px;
    height: 390px;
    background: #fff;
    
}
.left_bottom{
    border: solid;
    width: 520px;
    height: 400px;
    margin-top: 10px;
    background: #fff;
}


.middle_chart{
    margin-left: 20px;
}
.middle_top{
    border: solid;
    width: 520px;
    height: 190px;
    background: rgba(0, 0, 0, 0.7);
        color: #fff;
        font-family: 'Arial', sans-serif;
        display: flex;
        justify-content: center;
        align-items: center;
        padding-left: 5px;
        padding-right: 5px;
}
.middle_top h3{
    margin-left: 10px;
    width: 100px;
    text-align: center;
}
.middle_bottom{
    border: solid;
    width: 520px;
    height: 600px;
    margin-top: 10px;
    background: #fff;
}


.right_chart{
    margin-left: 20px;
}
.right_top{
    border: solid;
    width: 520px;
    height: 390px;
    background: #fff;
}
.right_bottom{
    border: solid;
    width: 520px;
    height: 400px;
    margin-top: 10px;
    background: #fff;
}

header {
        background: rgba(0, 0, 0, 0.5);
        color: white;
        padding: 1rem;
        text-align: center;
    }

    .tech-display {
        display: inline-block;
        font-size: 2em;
        font-weight: bold;
        color: #007bff;
        text-shadow: 0 0 2px #007bff, 0 0 40px #007bff, 0 0 60px #007bff, 0 0 0px #007bff;
        background: linear-gradient(45deg, #007bff, #0033cc);
        -webkit-background-clip: text;
        letter-spacing: 10px;
        transition: all 0.5s ease-in-out;
    }

    .tech-display:hover {
        transform: scale(1.1);
        text-shadow: 0 0 20px #007bff, 0 0 40px #007bff, 0 0 60px #007bff, 0 0 80px #007bff;
    }

数据库数据调用 

<?
    require "conn.php";
    // 获取用户mbti性格数量

    $sql1 = "select * from user where mbti='INTJ'";$result1 = mysqli_query($conn,$sql1);$INTJ = mysqli_num_rows($result1);
    $sql2 = "select * from user where mbti='INTP'";$result2 = mysqli_query($conn,$sql2);$INTP = mysqli_num_rows($result2);
    $sql3 = "select * from user where mbti='ENTJ'";$result3 = mysqli_query($conn,$sql3);$ENTJ = mysqli_num_rows($result3);
    $sql4 = "select * from user where mbti='ENTP'";$result4 = mysqli_query($conn,$sql4);$ENTP = mysqli_num_rows($result4);
    $sql5 = "select * from user where mbti='INFJ'";$result5 = mysqli_query($conn,$sql5);$INFJ = mysqli_num_rows($result5);
    $sql6 = "select * from user where mbti='INFP'";$result6 = mysqli_query($conn,$sql6);$INFP = mysqli_num_rows($result6);
    $sql7 = "select * from user where mbti='ENFJ'";$result7 = mysqli_query($conn,$sql7);$ENFJ = mysqli_num_rows($result7);
    $sql8 = "select * from user where mbti='ENFP'";$result8 = mysqli_query($conn,$sql8);$ENFP = mysqli_num_rows($result8);
    $sql9 = "select * from user where mbti='ISTJ'";$result9 = mysqli_query($conn,$sql9);$ISTJ = mysqli_num_rows($result9);
    $sql10 = "select * from user where mbti='ISFJ'";$result10 = mysqli_query($conn,$sql10);$ISFJ = mysqli_num_rows($result10);
    $sql11 = "select * from user where mbti='ESTJ'";$result11 = mysqli_query($conn,$sql11);$ESTJ = mysqli_num_rows($result11);
    $sql12 = "select * from user where mbti='ESFJ'";$result12 = mysqli_query($conn,$sql12);$ESFJ = mysqli_num_rows($result12);
    $sql13 = "select * from user where mbti='ISTP'";$result13 = mysqli_query($conn,$sql13);$ISTP = mysqli_num_rows($result13);
    $sql14 = "select * from user where mbti='ISFP'";$result14 = mysqli_query($conn,$sql14);$ISFP = mysqli_num_rows($result14);
    $sql15 = "select * from user where mbti='ESTP'";$result15 = mysqli_query($conn,$sql15);$ESTP = mysqli_num_rows($result15);
    $sql16 = "select * from user where mbti='ESFP'";$result16 = mysqli_query($conn,$sql16);$ESFP = mysqli_num_rows($result16);

    $array = [$INTJ, $INTP,$ENTJ,$ENTP, $INFJ, $INFP, $ENFJ,$ENFP,$ISTJ, $ISFJ, $ESTJ, $ESFJ, $ISTP, $ISFP, $ESTP, $ESFP];
    $minValue = min($array);
    
    

    if($INTJ==$minValue){$minMBTI = "INTJ";}if($INTP==$minValue){$minMBTI = "INTP";}if($ENTJ==$minValue){$minMBTI = "ENTJ";}if($ENTP==$minValue){$minMBTI = "ENTP";}
    if($INFJ==$minValue){$minMBTI = "INFJ";}if($INFP==$minValue){$minMBTI = "INFP";}if($ENFJ==$minValue){$minMBTI = "ENFJ";}if($ENFP==$minValue){$minMBTI = "ENFP";}
    if($ISTJ==$minValue){$minMBTI = "ISTJ";}if($ISFJ==$minValue){$minMBTI = "ISFJ";}if($ESTJ==$minValue){$minMBTI = "ESTJ";}if($ESFJ==$minValue){$minMBTI = "ESFJ";}
    if($ISTP==$minValue){$minMBTI = "ISTP";}if($ISFP==$minValue){$minMBTI = "ISFP";}if($ESTP==$minValue){$minMBTI = "ESTP";}if($ESFP==$minValue){$minMBTI = "ESFP";}

    
    

    $sql = "select mbti,sex from user";
    $result = mysqli_query($conn,$sql); $usernum = mysqli_num_rows($result);
    $all = "";
    $allsex = "";
    while($row = mysqli_fetch_array($result)){
        list($mbti,$sex) = $row;        
        

        $all=$all."$mbti";
        $allsex=$allsex."$sex";
    }

    $E = substr_count($all,"E");
    $I = substr_count($all,"I");
    $S = substr_count($all,"S");
    $N = substr_count($all,"N");
    $T = substr_count($all,"T");
    $F = substr_count($all,"F");
    $J = substr_count($all,"J");
    $P = substr_count($all,"P");

    $male = substr_count($allsex,"1");
    $female = substr_count($allsex,"0");
    //获取周一至周日用户聊天记录数

    $sqlchat = "select sendtime from comment";
    $resultchat = mysqli_query($conn,$sqlchat);

    $MON = 0;
    $TUE = 0;
    $WED = 0;
    $THU = 0;
    $FRI = 0;
    $SAT = 0;
    $SUN = 0;
    while($rowchat = mysqli_fetch_array($resultchat)){
        list($week) = $rowchat;
        $date = date_create_from_format('U', $week);
        $dayOfWeekEn = date_format($date, 'l');
        if($dayOfWeekEn=="Monday"){
            $MON=$MON+1;
        }
        if($dayOfWeekEn=="Tuesday"){
            $TUE=$TUE+1;
        }
        if($dayOfWeekEn=="Wednesday"){
            $WED=$WED+1;
        }
        if($dayOfWeekEn=="Thursday"){
            $THU=$THU+1;
        }
        if($dayOfWeekEn=="Friday"){
            $FRI=$FRI+1;
        }
        if($dayOfWeekEn=="Saturday"){
            $SAT=$SAT+1;
        }
        if($dayOfWeekEn=="Sunday"){
            $SUN=$SUN+1;
        }
    }
  
    $array1 = [$MON,$TUE,$WED,$THU,$FRI,$SAT,$SUN];
    $maxValue = max($array1);

    if($MON==$maxValue){$maxDAY = "周一";}if($TUE==$maxValue){$maxDAY = "周二";}if($WED==$maxValue){$maxDAY = "周三";}if($THU==$maxValue){$maxDAY = "周四";}
    if($FRI==$maxValue){$maxDAY = "周五";}if($SAT==$maxValue){$maxDAY = "周六";}if($SUN==$maxValue){$maxDAY = "周日";}
?>

可视化大屏图表

<?echo "<script>


    // 基于准备好的dom,初始化echarts实例
    var myChart = echarts.init(document.getElementById('chart'));
    var myChart1 = echarts.init(document.getElementById('chart1'));
    var myChart2 = echarts.init(document.getElementById('chart2'));
     var myChart3 = echarts.init(document.getElementById('chart3'));
       var myChart4 = echarts.init(document.getElementById('chart4'));
       
    // 指定图表的配置项和数据
    //柱状图
    var option = {
        title : {
                text: '16性格用户占比(分析家、外交家)',
                // 设置标题位置,默认居中
                left: 'center',
                // 设置标题样式
                textStyle: {
                    color: '#333',
                    fontSize: 16,
                    fontWeight: 'bold'
                },
            },
        xAxis: {
            type: 'category',
            data: [ 'INTJ', 'INTP', 'ENTJ', 'ENTP', 'INFJ', 'INFP', 'ENFJ', 'ENFP']
        },
        yAxis: {
            type: 'value'
        },
        series: [
            {
            data: [$INTJ, $INTP,$ENTJ,$ENTP, $INFJ, $INFP, $ENFJ,$ENFP],
            type: 'bar'
            }
        ]
};




  var  option1 = {

     title : {
                text: 'MBTI性格分布(八个性格字母)',
                // 设置标题位置,默认居中
                left: 'center',
                // 设置标题样式
                textStyle: {
                    color: '#333',
                    fontSize: 16,
                    fontWeight: 'bold'
                },
            },

  legend: {
    top: 'bottom'
  },
  toolbox: {
    show: true,
    feature: {
      mark: { show: true },
      dataView: { show: true, readOnly: false },
      restore: { show: true },
      saveAsImage: { show: true }
    }
  },
  series: [
    {
      name: 'Nightingale Chart',
      type: 'pie',
      radius: [50, 200],
      center: ['50%', '50%'],
      roseType: 'area',
      itemStyle: {
        borderRadius: 8
      },
      data: [
        { value: $E, name: 'E外向型' },
        { value: $I, name: 'I内向型' },
        { value: $S, name: 'S观察型' },
        { value: $N, name: 'N直觉型' },
        { value: $T, name: 'T理性型' },
        { value: $F, name: 'F感受型' },
        { value: $J, name: 'J判断型' },
        { value: $P, name: 'P展望型' },
      ]
    }
  ]
};


var option2 = {
 title : {
                text: '用户活跃度(论坛发言次数)',
                // 设置标题位置,默认居中
                left: 'center',
                // 设置标题样式
                textStyle: {
                    color: '#333',
                    fontSize: 16,
                    fontWeight: 'bold'
                },
            },
  xAxis: {
    type: 'category',
    data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
  },
  yAxis: {
    type: 'value'
  },
  series: [
    {
      data: [$MON,$TUE,$WED,$THU,$FRI,$SAT,$SUN],
      type: 'line',
      smooth: true
    }
  ]
};


var option3 = {
title : {
                text: '用户性别占比',
                // 设置标题位置,默认居中
                left: 'center',
                // 设置标题样式
                textStyle: {
                    color: '#333',
                    fontSize: 16,
                    fontWeight: 'bold'
                },
            },
  tooltip: {
    trigger: 'item'
  },
  legend: {
    top: '5%',
    left: 'center'
  },
  series: [
    {
      name: 'sex',
      type: 'pie',
      radius: ['40%', '70%'],
      avoidLabelOverlap: false,
      itemStyle: {
        borderRadius: 10,
        borderColor: '#fff',
        borderWidth: 2
      },
      label: {
        show: false,
        position: 'center'
      },
      emphasis: {
        label: {
          show: true,
          fontSize: 40,
          fontWeight: 'bold'
        }
      },
      labelLine: {
        show: false
      },
      data: [
        { value: $male, name: '男性用户' },
        { value: $female, name: '女性用户' },
      ]
    }
  ]
};


let dataAxis = ['ISTJ', 'ISFJ', 'ESTJ', 'ESFJ', 'ISTP', 'ISFP', 'ESTP', 'ESFP'];
// prettier-ignore
let data = [$ISTJ, $ISFJ, $ESTJ, $ESFJ, $ISTP, $ISFP, $ESTP, $ESFP];
let yMax = 500;
let dataShadow = [];
for (let i = 0; i < data.length; i++) {
  dataShadow.push(yMax);
}
var option4 = {
  title: {
    text: '16性格用户占比(守护者、探险家)',
                // 设置标题位置,默认居中
                left: 'center',
                // 设置标题样式
                textStyle: {
                    color: '#333',
                    fontSize: 16,
                    fontWeight: 'bold'
                },
  },
  xAxis: {
    data: dataAxis,
    axisLabel: {
      inside: true,
      color: '#000',
      fontSize: 14,
    },
    axisTick: {
      show: false
    },
    axisLine: {
      show: false
    },
    z: 10
  },
  yAxis: {
    axisLine: {
      show: false
    },
    axisTick: {
      show: false
    },
    axisLabel: {
      color: '#999'
    }
  },
  dataZoom: [
    {
      type: 'inside'
    }
  ],
  series: [
    {
      type: 'bar',
      showBackground: true,
      itemStyle: {
        color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
          { offset: 0, color: '#83bff6' },
          { offset: 0.5, color: '#188df0' },
          { offset: 1, color: '#188df0' }
        ])
      },
      emphasis: {
        itemStyle: {
          color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
            { offset: 0, color: '#2378f7' },
            { offset: 0.7, color: '#2378f7' },
            { offset: 1, color: '#83bff6' }
          ])
        }
      },
      data: data
    }
  ]
};
// Enable data zoom when user click bar.
const zoomSize = 6;
myChart.on('click', function (params) {
  console.log(dataAxis[Math.max(params.dataIndex - zoomSize / 2, 0)]);
  myChart.dispatchAction({
    type: 'dataZoom',
    startValue: dataAxis[Math.max(params.dataIndex - zoomSize / 2, 0)],
    endValue:
      dataAxis[Math.min(params.dataIndex + zoomSize / 2, data.length - 1)]
  });
});

    
    // 使用刚指定的配置项和数据显示图表。
    myChart.setOption(option);
    myChart1.setOption(option1);
     myChart2.setOption(option2);
     myChart3.setOption(option3);
      myChart4.setOption(option4);
   
</script>"?>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/904760.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

jenkins ssh 免密报错Host key verification failed.

jenkins 发布项目&#xff0c;ssh连接远程服务器时报错&#xff1a;Host key verification failed. 解决&#xff1a; 原因是生成的sshkey不是用的jenkins用户&#xff0c;所以切换用户到&#xff1a;jenkins重新生成sshkey su jenkins ssh-keygen -t rsa ssh-copy-id -i ~/…

一款专业获取 iOS 设备的 UDID 工具|一键获取iPhone iPad设备的 UDID

什么是UDID&#xff1f; UDID&#xff0c;是iOS设备的一个唯一识别码&#xff0c;每台iOS设备都有一个独一无二的编码&#xff0c;这个编码&#xff0c;我们称之为识别码&#xff0c;也叫做UDID&#xff08; Unique Device Identifier&#xff09; 扫描后系统提示输入密码&am…

封装ES高亮Yxh-Es

拉取代码 git拉取 yxh-elasticsearch: es基本封装工具 使用场景 我们拿游览器举例&#xff0c;我将我要搜索的内容输入到输入框进行搜索&#xff0c;游览器就会根据对应的内容查出文章中出现过的关键字&#xff0c;并加上样式&#xff0c;让我们看的更清晰。 我们以就是使用全文…

布谷语音源码服务器搭建环境及配置流程

布谷语音源码部署环境安装要求&#xff08;只有在相同的环境下才更容易避免一些不必要的麻烦&#xff09;&#xff1a;●安装Center OS 7.9&#xff0c;我们自己的服务器使用的是7.9建议相同系统&#xff0c;非强制●安装宝塔环境&#xff08;强烈推荐使用&#xff09;●安装软…

百度SEO中的关键词密度与内容优化研究【百度SEO专家】

大家好&#xff0c;我是百度SEO专家&#xff08;林汉文&#xff09;&#xff0c;在百度SEO优化中&#xff0c;关键词密度和关键词内容的优化对提升页面排名至关重要。关键词的合理布局与内容的质量是确保网页在百度搜索结果中脱颖而出的关键因素。下面我们将从关键词密度和关键…

RDKit|分子数据的聚类分析

分子数据的聚类分析 聚类分析是一种无监督学习技术,用于根据分子特征将分子分组成若干簇。每个簇中的分子在特征空间中应当相似,而不同簇之间的分子差异则较大。在化学信息学和药物设计中,聚类分析常用于化合物库的分组、潜在药物靶点的发现以及分子多样性分析。 1 聚类分…

k8s环境下rabbitmq安装社区插件:rabbitmq_delayed_message_exchange

怎么在k8s环境下的rabbitmq安装社区版插件:rabbitmq_delayed_message_exchange 在你的rabbit-value.yaml中加入以下行&#xff0c;然后使用helm重新安装&#xff08;最好把pvc也删了重新安装&#xff08;如果你的密码变化了的话&#xff09; 减少出错概率&#xff09; ## par…

【python】OpenCV—findContours(4.4)

文章目录 1、功能描述2、代码实现3、完整代码4、结果展示5、涉及到的库函数6、参考 1、功能描述 找出物体轮廓&#xff0c;根据 PCA 计算特征值和特征向量&#xff0c;绘制特征值和特征向量&#xff0c;来初步展示物体的方向 2、代码实现 导入库函数&#xff0c;读入图片&am…

【论文阅读笔记】VLP: A Survey on Vision-language Pre-training

目录 前言2 特征提取&#xff08;Feature extraction&#xff09;2.1.1 图象特征提取OD-based Region feature / RoIFreeze the pre-trained object detectorsGrid features&#xff08;网格特征&#xff09;CNN-GFsEnd-to-End Training&#xff08;端到端训练&#xff09;ViT-…

Swarm-LIO: Decentralized Swarm LiDAR-inertial Odometry论文翻译

文章目录 前言一、介绍二、相关工作三、方法A. 问题表述B. 框架概述C. 群体系统的初始化D. 去中心化激光雷达-惯性状态估计 四. 实验A. 室内飞行B. 退化环境飞行C. 去中心化部署 五. 结论和未来工作 前言 原文&#xff1a;原文 准确的自我状态和相对状态估计是完成群体任务的关…

Apache Hive分布式容错数据仓库系统

Apache Hive™是一个分布式的、容错的数据仓库系统&#xff0c;它支持大规模的分析&#xff0c;并使用SQL方便地读取、写入和管理驻留在分布式存储中的pb级数据。 Apache Hive Apache Hive是什么 Apache Hive是一个分布式的、容错的数据仓库系统&#xff0c;支持大规模的分析…

Vue CLI: 安装、项目创建及基本概念指南,vue生命周期

只有经历地狱般的磨砺&#xff0c;才能练就创造出天堂的力量&#xff1b;只有流过血的手指&#xff0c;才能弹奏出世间绝唱 文章目录 vue-cli介绍安装创建项目入口文件修改文件夹名称的步骤ES6模块化单文件组件 vue生命周期vue动画 vue-cli 介绍 vue-lic是一个开发vue项目的脚…

Geotrust SSL证书

在数字化浪潮席卷全球的今天&#xff0c;互联网已成为信息交流与商业活动不可或缺的平台。然而&#xff0c;随着网络应用的深入&#xff0c;数据泄露、身份盗用、网络诈骗等安全问题也日益凸显&#xff0c;严重威胁着用户的隐私与财产安全。在这样的背景下&#xff0c;数字证书…

css实现边框双色凹凸半圆

整体效果如下图&#xff1a; 结构代码&#xff1a; <div classline-outside-wrap><div classwrap><img src../img/avatar2x.png/><div classcontent-wrap></div></div></div> 内凹框实现&#xff1a; .content-wrap{width:100%;he…

HarmonyOS:自定义组件冻结功能

一、简介 自定义组件冻结功能专为优化复杂UI页面的性能而设计&#xff0c;尤其适用于包含多个页面栈、长列表或宫格布局的场景。在这些情况下&#xff0c;当状态变量绑定了多个UI组件&#xff0c;其变化可能触发大量UI组件的刷新&#xff0c;进而导致界面卡顿和响应延迟。为了提…

Kafka相关API开发

(一)引入依赖 用API直接去操作kafka(读写数据)在实际开发中用的并不多&#xff0c;学习它主要还是为了加深对Kafka功能的理解。kafka的读写操作&#xff0c;实际开发中&#xff0c;是通过各类更上层的组件去实现。而这些组件在读写kafka数据时&#xff0c;用的当然是kafka的jav…

警务辅助人员管理系统小程序ssm+论文源码调试讲解

2系统关键技术 2.1 微信小程序 微信小程序&#xff0c;简称小程序&#xff0c;英文名Mini Program&#xff0c;是一种全新的连接用户与服务的方式&#xff0c;可以快速访问、快速传播&#xff0c;并具有良好的使用体验。 小程序的主要开发语言是JavaScript&#xff0c;它与普…

微服务设计模式 - 断路器模式 (Circuit Breaker Pattern)

微服务设计模式 - 断路器模式 (Circuit Breaker Pattern) 定义 断路器模式&#xff08;Circuit Breaker Pattern&#xff09;是云计算和微服务架构中的一种保护性设计模式&#xff0c;其目的是避免系统中的调用链出现故障时&#xff0c;导致系统瘫痪。通过断路器模式&#xff…

Yelp 数据集进行用户画像, 使用聚类做推荐

使用 Yelp 数据集进行用户画像&#xff08;User Profiling&#xff09;是一项有趣的任务&#xff0c;可以理解用户的偏好、行为和特征。以下是总结的一个基本的步骤&#xff0c;帮助构建用户画像 pandas 加载数据&#xff1a; import pandas as pd# 加载数据 users pd.read_…

DDRPHY数字IC后端设计实现系列专题之后端设计导入,IO Ring设计

本章详细分析和论述了 LPDDR3 物理层接口模块的布图和布局规划的设计和实 现过程&#xff0c;包括设计环境的建立&#xff0c;布图规划包括模块尺寸的确定&#xff0c;IO 单元、宏单元以及 特殊单元的摆放。由于布图规划中的电源规划环节较为重要&#xff0c; 影响芯片的布线资…