问题修改

This commit is contained in:
duanhao 2025-08-13 16:43:36 +08:00
parent e9dc37aaa8
commit 6d701f2b85
16 changed files with 342 additions and 175 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -200,16 +200,20 @@ export const useGroupDiscoveryStore = defineStore("groupDiscovery", {
if (res.code != 200) return
let resultObj = {}
const themeMap = {
群体一: "#32b6fb",
群体二: "#00d6da",
群体三: "#fddc33"
群体一: "#00d6da",
群体二: "#fddc33",
群体三: "#32b6fb"
}
resultObj["xAxisData"] = res.data.timeList.map((item) => TansTimestamp(item, "HH:mm:ss"))
resultObj["yAxisRange"] = res.data.scale
resultObj["seriesList"] = []
Object.entries(res.data.data).forEach(([key, list]) => {
resultObj["seriesList"].push({ name: key, themeColor: themeMap[key], data: list })
// 定义明确的群体顺序
const groupOrder = ["群体一", "群体二", "群体三"]
groupOrder.forEach(key => {
if (res.data.data[key]) {
resultObj["seriesList"].push({ name: key, themeColor: themeMap[key], data: res.data.data[key] })
}
})
this.chartData = resultObj
},
@ -275,45 +279,52 @@ export const useGroupStructureStore = defineStore("groupStructure", {
chartsData: {},
wordCloudData: [
{
text: "佩洛西",
text: "主权权益",
top: 115.5,
left: 215.5,
width: 109,
height: 40,
fontSize: 28,
width: 80,
height: 22,
fontSize: 13,
opacity: 1
},
{ text: "中国", top: 183.5, left: 69.5, width: 73, height: 35, fontSize: 22, opacity: 1 },
{
text: "中国人民解放军",
text: "局座预言",
top: 80,
left: 69.5,
width: 73,
height: 22,
fontSize: 12,
opacity: 0.7
},
{
text: "吃瓜",
top: 72.5,
left: 132.5,
width: 123,
width: 50,
height: 22,
fontSize: 12,
opacity: 1
},
{
text: "中美关系",
top: 171.5,
text: "中国海警",
top: 140,
left: 212.5,
width: 81,
height: 22,
fontSize: 14,
width: 130,
height: 40,
fontSize: 22,
opacity: 0.8
},
{ text: "台独", top: 135.5, left: 42.5, width: 57, height: 24, fontSize: 16, opacity: 1 },
{
text: "台海和平",
top: 228.5,
left: 230.5,
text: "菲律宾",
top: 150,
left: 50,
width: 81,
height: 22,
fontSize: 14,
opacity: 0.8
},
{
text: "坚决反对",
text: "手指",
top: 200.5,
left: 38.5,
width: 73,
@ -322,29 +333,38 @@ export const useGroupStructureStore = defineStore("groupStructure", {
opacity: 0.7
},
{
text: "联合公报",
top: 241.5,
left: 130.5,
text: "装甲船",
top: 50,
left: 160.5,
width: 73,
height: 19,
fontSize: 12,
opacity: 0.7
},
{
text: "有力反制",
text: "登检",
top: 211.5,
left: 143.5,
width: 73,
width: 50,
height: 19,
fontSize: 12,
opacity: 1
},
{ text: "白宫", top: 176.5, left: 15.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 },
{ text: "内政", top: 87.5, left: 36.5, width: 53, height: 22, fontSize: 14, opacity: 1 },
{ text: "访台", top: 103.5, left: 95.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 },
{ text: "领土", top: 57.5, left: 72.5, width: 49, height: 19, fontSize: 12, opacity: 0.6 },
{ text: "原则", top: 77.5, left: 264.5, width: 49, height: 19, fontSize: 12, opacity: 0.7 },
{ text: "台湾", top: 195.5, left: 287.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 }
{ text: "执法", top: 176.5, left: 15.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 },
{ text: "现场画面", top: 110, left: 26, width: 90, height: 22, fontSize: 14, opacity: 1 },
{ text: "渔民", top: 103.5, left: 95.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 },
{ text: "包夹", top: 57.5, left: 72.5, width: 49, height: 19, fontSize: 12, opacity: 0.6 },
{ text: "枪支", top: 77.5, left: 264.5, width: 49, height: 19, fontSize: 12, opacity: 0.7 },
{ text: "解决", top: 195.5, left: 287.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 },
{
text: "大刀长矛",
top: 186,
left: 200.5,
width: 70,
height: 19,
fontSize: 12,
opacity: 0.8
}
],
posts: [
{
@ -584,7 +604,96 @@ export const useGroupMemberStore = defineStore("groupMember", {
graph: {},
chartData: {},
chartsData: {},
posts: []
posts: [],
wordCloudData: [
{
text: "主权权益",
top: 115.5,
left: 215.5,
width: 80,
height: 22,
fontSize: 13,
opacity: 1
},
{
text: "局座预言",
top: 80,
left: 69.5,
width: 73,
height: 22,
fontSize: 12,
opacity: 0.7
},
{
text: "吃瓜",
top: 72.5,
left: 132.5,
width: 50,
height: 22,
fontSize: 12,
opacity: 1
},
{
text: "中国海警",
top: 140,
left: 212.5,
width: 130,
height: 40,
fontSize: 22,
opacity: 0.8
},
{
text: "菲律宾",
top: 150,
left: 50,
width: 81,
height: 22,
fontSize: 14,
opacity: 0.8
},
{
text: "手指",
top: 200.5,
left: 38.5,
width: 73,
height: 19,
fontSize: 12,
opacity: 0.7
},
{
text: "装甲船",
top: 50,
left: 160.5,
width: 73,
height: 19,
fontSize: 12,
opacity: 0.7
},
{
text: "登检",
top: 211.5,
left: 143.5,
width: 50,
height: 19,
fontSize: 12,
opacity: 1
},
{ text: "执法", top: 176.5, left: 15.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 },
{ text: "现场画面", top: 110, left: 26, width: 90, height: 22, fontSize: 14, opacity: 1 },
{ text: "渔民", top: 103.5, left: 95.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 },
{ text: "包夹", top: 57.5, left: 72.5, width: 49, height: 19, fontSize: 12, opacity: 0.6 },
{ text: "枪支", top: 77.5, left: 264.5, width: 49, height: 19, fontSize: 12, opacity: 0.7 },
{ text: "解决", top: 195.5, left: 287.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 },
{
text: "大刀长矛",
top: 186,
left: 200.5,
width: 70,
height: 19,
fontSize: 12,
opacity: 0.8
}
],
}),
actions: {
// 获取时间轴

View File

@ -57,6 +57,7 @@ import xinglangjunshi from "@/assets/anchorAvatar/xinlangjunshi.png"
import huanqiushibao from "@/assets/anchorAvatar/huanqiushibao.png"
import jiangxiayunfei from "@/assets/anchorAvatar/jiangxiayunfei.png"
import tangning from "@/assets/anchorAvatar/tangning20150903.png"
import boss from "@/assets/anchorAvatar/boss.png"
import lezhi from "@/assets/anchorAvatar/lezhi567.png"
import daxiaaaa from "@/assets/anchorAvatar/daxiaaaaa.png"
import jizhetuan from "@/assets/anchorAvatar/jiangxiayunfei.png"
@ -337,7 +338,7 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
anchorChartInfoList: [
{ id: 1, name: "锚点数量", icon: anchorNumber, number: 20 },
{ id: 2, name: "平均粉丝数量", icon: fancyNumber, number: "812.8w" },
{ id: 3, name: "平均发帖频率", icon: frequencyNumber, number: "20h/1次" },
{ id: 3, name: "平均发帖频率", icon: frequencyNumber, number: "20h/次" },
{ id: 4, name: "平均参与互动次数", icon: interactionNumber, number: 157 }
],
@ -1082,14 +1083,14 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
commenter: " 外贸发布BBS",
comment:
"#菲自曝被中国海警缴枪的是顶级特种部队# 菲律宾特种部队就这?怪不得现在菲律宾网友各种找补洗白 ",
time: "盖世英雄玉椒龙"
time: "2024-06-23 15:20:55"
},
{
avatar: xinlangImg,
commenter: " 新浪军事",
comment:
" #菲总统最新言论话里有话#【警惕!菲总统最新言论,话里有话】什么叫做一意孤行地碰瓷?菲律宾方...",
time: "2024-06-23 18:47:55 "
time: "2024-06-23 18:47:55"
},
{
avatar: xinlangImg,
@ -1608,7 +1609,7 @@ export const useKeyNodeRecognitionStore = defineStore("keyNodeRecognition", {
]
},
钻石狗Boss: {
avatar: tangning,
avatar: boss,
earlistTime: "2024-03-16 17:10:41",
postTotal: 0,
postTransmitedTotal: 0,

View File

@ -74,45 +74,45 @@ export const useCharacterInteractionStore = defineStore("characterInteraction",
],
wordCloudData: [
{
text: "佩洛西",
top: 115.5,
text: "賴清德",
top: 100.5,
left: 215.5,
width: 109,
width: 120,
height: 40,
fontSize: 28,
opacity: 1
},
{ text: "中国", top: 183.5, left: 69.5, width: 73, height: 35, fontSize: 22, opacity: 1 },
{ text: "總統", top: 150.5, left: 69.5, width: 73, height: 35, fontSize: 22, opacity: 1 },
{
text: "中国人民解放军",
text: "民進",
top: 72.5,
left: 132.5,
width: 123,
width: 55,
height: 22,
fontSize: 12,
opacity: 1
},
{
text: "中美关系",
top: 171.5,
text: "中华民國",
top: 150.5,
left: 212.5,
width: 81,
height: 22,
fontSize: 14,
opacity: 0.8
},
{ text: "台独", top: 135.5, left: 42.5, width: 57, height: 24, fontSize: 16, opacity: 1 },
{ text: "台灣", top: 120.5, left: 30.5, width: 57, height: 24, fontSize: 16, opacity: 1 },
{
text: "台海和平",
top: 228.5,
left: 230.5,
width: 81,
text: "英文",
top: 200.5,
left: 250.5,
width: 55,
height: 22,
fontSize: 14,
opacity: 0.8
},
{
text: "坚决反对",
text: "就職典禮",
top: 200.5,
left: 38.5,
width: 73,
@ -121,29 +121,29 @@ export const useCharacterInteractionStore = defineStore("characterInteraction",
opacity: 0.7
},
{
text: "联合公报",
top: 241.5,
left: 130.5,
text: "中國",
top: 220.5,
left: 120.5,
width: 73,
height: 19,
fontSize: 12,
opacity: 0.7
},
{
text: "有力反制",
top: 211.5,
left: 143.5,
width: 73,
text: "萧美琴",
top: 190.5,
left: 160.5,
width: 70,
height: 19,
fontSize: 12,
opacity: 1
},
{ text: "白宫", top: 176.5, left: 15.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 },
{ text: "内政", top: 87.5, left: 36.5, width: 53, height: 22, fontSize: 14, opacity: 1 },
{ text: "访台", top: 103.5, left: 95.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 },
{ text: "领土", top: 57.5, left: 72.5, width: 49, height: 19, fontSize: 12, opacity: 0.6 },
{ text: "原则", top: 77.5, left: 264.5, width: 49, height: 19, fontSize: 12, opacity: 0.7 },
{ text: "台湾", top: 195.5, left: 287.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 }
{ text: "民主", top: 176.5, left: 15.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 },
{ text: "職演", top: 87.5, left: 36.5, width: 53, height: 22, fontSize: 14, opacity: 1 },
{ text: "人民", top: 103.5, left: 95.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 },
{ text: "立委", top: 57.5, left: 72.5, width: 49, height: 19, fontSize: 12, opacity: 0.6 },
{ text: "國會", top: 60.5, left: 265.5, width: 49, height: 19, fontSize: 12, opacity: 0.7 },
{ text: "两岸", top: 170.5, left: 287.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 }
],
statisticsList: [
@ -345,45 +345,45 @@ export const useSocialGroupsStore = defineStore("socialGroups", {
],
wordCloudData: [
{
text: "佩洛西",
top: 115.5,
text: "賴清德",
top: 100.5,
left: 215.5,
width: 109,
width: 120,
height: 40,
fontSize: 28,
opacity: 1
},
{ text: "中国", top: 183.5, left: 69.5, width: 73, height: 35, fontSize: 22, opacity: 1 },
{ text: "總統", top: 150.5, left: 69.5, width: 73, height: 35, fontSize: 22, opacity: 1 },
{
text: "中国人民解放军",
text: "民進",
top: 72.5,
left: 132.5,
width: 123,
width: 55,
height: 22,
fontSize: 12,
opacity: 1
},
{
text: "中美关系",
top: 171.5,
text: "中华民國",
top: 150.5,
left: 212.5,
width: 81,
height: 22,
fontSize: 14,
opacity: 0.8
},
{ text: "台独", top: 135.5, left: 42.5, width: 57, height: 24, fontSize: 16, opacity: 1 },
{ text: "台灣", top: 120.5, left: 30.5, width: 57, height: 24, fontSize: 16, opacity: 1 },
{
text: "台海和平",
top: 228.5,
left: 230.5,
width: 81,
text: "英文",
top: 200.5,
left: 250.5,
width: 55,
height: 22,
fontSize: 14,
opacity: 0.8
},
{
text: "坚决反对",
text: "就職典禮",
top: 200.5,
left: 38.5,
width: 73,
@ -392,30 +392,30 @@ export const useSocialGroupsStore = defineStore("socialGroups", {
opacity: 0.7
},
{
text: "联合公报",
top: 241.5,
left: 130.5,
text: "中國",
top: 220.5,
left: 120.5,
width: 73,
height: 19,
fontSize: 12,
opacity: 0.7
},
{
text: "有力反制",
top: 211.5,
left: 143.5,
width: 73,
text: "萧美琴",
top: 190.5,
left: 160.5,
width: 70,
height: 19,
fontSize: 12,
opacity: 1
},
{ text: "白宫", top: 176.5, left: 15.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 },
{ text: "内政", top: 87.5, left: 36.5, width: 53, height: 22, fontSize: 14, opacity: 1 },
{ text: "访台", top: 103.5, left: 95.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 },
{ text: "领土", top: 57.5, left: 72.5, width: 49, height: 19, fontSize: 12, opacity: 0.6 },
{ text: "原则", top: 77.5, left: 264.5, width: 49, height: 19, fontSize: 12, opacity: 0.7 },
{ text: "台湾", top: 195.5, left: 287.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 }
]
{ text: "民主", top: 176.5, left: 15.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 },
{ text: "職演", top: 87.5, left: 36.5, width: 53, height: 22, fontSize: 14, opacity: 1 },
{ text: "人民", top: 103.5, left: 95.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 },
{ text: "立委", top: 57.5, left: 72.5, width: 49, height: 19, fontSize: 12, opacity: 0.6 },
{ text: "國會", top: 60.5, left: 265.5, width: 49, height: 19, fontSize: 12, opacity: 0.7 },
{ text: "两岸", top: 170.5, left: 287.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 }
],
}),
actions: {
// 互动行为相似列表数据
@ -557,45 +557,45 @@ export const useCharacterHiddenStore = defineStore("characterHidden", {
],
wordCloudData: [
{
text: "佩洛西",
top: 115.5,
text: "賴清德",
top: 100.5,
left: 215.5,
width: 109,
width: 120,
height: 40,
fontSize: 28,
opacity: 1
},
{ text: "中国", top: 183.5, left: 69.5, width: 73, height: 35, fontSize: 22, opacity: 1 },
{ text: "總統", top: 150.5, left: 69.5, width: 73, height: 35, fontSize: 22, opacity: 1 },
{
text: "中国人民解放军",
text: "民進",
top: 72.5,
left: 132.5,
width: 123,
width: 55,
height: 22,
fontSize: 12,
opacity: 1
},
{
text: "中美关系",
top: 171.5,
text: "中华民國",
top: 150.5,
left: 212.5,
width: 81,
height: 22,
fontSize: 14,
opacity: 0.8
},
{ text: "台独", top: 135.5, left: 42.5, width: 57, height: 24, fontSize: 16, opacity: 1 },
{ text: "台灣", top: 120.5, left: 30.5, width: 57, height: 24, fontSize: 16, opacity: 1 },
{
text: "台海和平",
top: 228.5,
left: 230.5,
width: 81,
text: "英文",
top: 200.5,
left: 250.5,
width: 55,
height: 22,
fontSize: 14,
opacity: 0.8
},
{
text: "坚决反对",
text: "就職典禮",
top: 200.5,
left: 38.5,
width: 73,
@ -604,29 +604,29 @@ export const useCharacterHiddenStore = defineStore("characterHidden", {
opacity: 0.7
},
{
text: "联合公报",
top: 241.5,
left: 130.5,
text: "中國",
top: 220.5,
left: 120.5,
width: 73,
height: 19,
fontSize: 12,
opacity: 0.7
},
{
text: "有力反制",
top: 211.5,
left: 143.5,
width: 73,
text: "萧美琴",
top: 190.5,
left: 160.5,
width: 70,
height: 19,
fontSize: 12,
opacity: 1
},
{ text: "白宫", top: 176.5, left: 15.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 },
{ text: "内政", top: 87.5, left: 36.5, width: 53, height: 22, fontSize: 14, opacity: 1 },
{ text: "访台", top: 103.5, left: 95.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 },
{ text: "领土", top: 57.5, left: 72.5, width: 49, height: 19, fontSize: 12, opacity: 0.6 },
{ text: "原则", top: 77.5, left: 264.5, width: 49, height: 19, fontSize: 12, opacity: 0.7 },
{ text: "台湾", top: 195.5, left: 287.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 }
{ text: "民主", top: 176.5, left: 15.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 },
{ text: "職演", top: 87.5, left: 36.5, width: 53, height: 22, fontSize: 14, opacity: 1 },
{ text: "人民", top: 103.5, left: 95.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 },
{ text: "立委", top: 57.5, left: 72.5, width: 49, height: 19, fontSize: 12, opacity: 0.6 },
{ text: "國會", top: 60.5, left: 265.5, width: 49, height: 19, fontSize: 12, opacity: 0.7 },
{ text: "两岸", top: 170.5, left: 287.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 }
],
statisticsDetailList: [
{ id: 1, icon: nodePrefix, name: "节点数", key: "nodesCount" },

View File

@ -135,9 +135,9 @@ const initChart = () => {
extraCssText: "box-shadow:none;padding:0;",
formatter: function (params) {
let color = {
群体一: "#33b6fb",
群体二: "#00d6da",
群体三: "#fddc33"
群体一: "#00d6da",
群体二: "#fddc33",
群体三: "#32b6fb"
}
if (props.moduleName == "群体成员演化分析") {
color = {

View File

@ -19,9 +19,9 @@
import { onMounted } from "vue"
import * as echarts from "echarts"
const chartTitleList = [
{ id: 1, name: "头部自媒体 增量速率" },
{ id: 2, name: "官方媒体 增量速率" },
{ id: 3, name: "普通自媒体 增量速率" }
{ id: 1, name: "群体一 增量速率" },
{ id: 2, name: "群体二 增量速率" },
{ id: 3, name: "群体三 增量速率" }
]
let chartInstance1 = null
let chartInstance2 = null
@ -39,9 +39,9 @@ const props = defineProps({
const optionHandle = ({ xAxis, yAxis, data }, flag) => {
const lineColors = {
"头部自媒体 增量速率": "#2AB8FD",
"官方媒体 增量速率": "#01D7DA",
"普通自媒体 增量速率": "#FFDA09"
"群体一 增量速率": "#01D7DA",
"群体二 增量速率": "#FFDA09",
"群体三 增量速率": "#2AB8FD"
}
return {
tooltip: {
@ -116,9 +116,9 @@ const initCharts = () => {
chartInstance1 = echarts.init(document.getElementById("container1"))
chartInstance2 = echarts.init(document.getElementById("container2"))
chartInstance3 = echarts.init(document.getElementById("container3"))
chartInstance1.setOption(optionHandle(props.chartsData.topSelfMedia, "头部自媒体 增量速率"))
chartInstance2.setOption(optionHandle(props.chartsData.officialMedia, "官方媒体 增量速率"))
chartInstance3.setOption(optionHandle(props.chartsData.ordinaryMedia, "普通自媒体 增量速率"))
chartInstance1.setOption(optionHandle(props.chartsData.topSelfMedia, "群体一 增量速率"))
chartInstance2.setOption(optionHandle(props.chartsData.officialMedia, "群体二 增量速率"))
chartInstance3.setOption(optionHandle(props.chartsData.ordinaryMedia, "群体三 增量速率"))
}
onMounted(() => {

View File

@ -76,16 +76,18 @@ const initTopicChart = () => {
bottom: "1%",
containLabel: true
},
toolbox: {
feature: {
saveAsImage: {}
}
},
// toolbox: {
// feature: {
// saveAsImage: {}
// }
// },
xAxis: {
type: "category",
boundaryGap: true, //
data: ["6.25", "6.26", "6.27", "6.28", "6.29", "6.30", "7.1", "7.2"],
name: "日期",
nameLocation: "end",
nameGap: 10,
nameTextStyle: {
color: "#606266",
fontSize: 12

View File

@ -23,6 +23,17 @@ const emit = defineEmits(["click:openDialog", "click:goback"])
const detailContainer = ref(null)
const currentSelectedCommunity = ref({})
let chart = null
//
const officeList = ["峨眉公安","平安马边","东坡公安","淮安清江浦法院","抚州消防","游仙公安",
"甘泉检察","平安会东","淮安市公安局淮阴分局","南铁福州车务段","太白检察",
"任丘司法行政","万源警事","澄城检察","国台办发布","海洋装备与公务船资讯",
"团陵水县委","滕州司法行政在线","陇南徽县总工会","南部战区","中国海警","奉贤反邪"]
//
const newList = ["大象观点","大象新闻","湖北日报","热点锐评","合肥晚报","北京广播电视台","环球收视",
"沧州微播报","中华文化传媒","玉渊谭天","人民网","空警世界","海峡之声","中国军号",
"新浪军事","解放军报","人民日报","中国妇女报","央视新闻","成都新事儿","中国警方在线",
"环视频","四川观察","齐鲁晚报","生命时报","中国新闻网","南海之声","每日信报","环球网",
"大国外交最前线","环球时报"]
//
const calculateInitialZoom = (nodes) => {
@ -38,6 +49,17 @@ const initChart = async () => {
currentSelectedCommunity.value = props.communityNode
chart = echarts.init(document.getElementById("container"))
//
const nodeLabel = (node) => {
if (officeList.includes(node.nodeName)) {
return "政府官号"
}
if (newList.includes(node.nodeName)) {
return "新闻媒体"
}
return "普通自媒体"
}
//
//
let nodes = []
@ -56,36 +78,37 @@ const initChart = async () => {
.map((filteredList) => ({
...extraInfo[filteredList[0]],
anchor: filteredList[0],
neighbors: filteredList[1].map((neighNode) => ({ name: neighNode, avatar: "" }))
neighbors: filteredList[1].map((neighNode) => ({ id: neighNode ,nodeName: neighNode, avatar: "" }))
}))
//线
let links = []
filterResult.forEach(({ anchor, neighbors }) => {
;(neighbors ?? []).forEach((neigh) => {
links.push({ source: anchor, target: neigh.name })
links.push({ source: anchor, target: neigh.id })
})
})
//
let nodeSet = new Set()
filterResult.forEach((item) => {
//
if (!nodeSet.has(item.anchor)) {
nodes.push({ name: item?.anchor, value: item?.anchor, category: 1, ...item })
nodes.push({ id: item?.anchor, nodeName: item?.anchor, value: item?.anchor, category: 1, ...item })
nodeSet.add(item?.anchor)
}
//
;(item.neighbors || []).forEach((n) => {
if (!nodeSet.has(n?.name)) {
nodes.push({ name: n.name, value: n.name, category: 0, avatar: n.avatar ?? "" })
nodeSet.add(n.name)
if (!nodeSet.has(n?.nodeName)) {
nodes.push({ id: n.id, nodeName: n.nodeName, value: n.nodeName, category: 0, avatar: n.avatar ?? "", label: nodeLabel(n) })
nodeSet.add(n.nodeName)
}
})
})
const data = { nodes, links }
console.log(data)
const categories = [
{ name: "邻居账号", category: 0 },
@ -160,7 +183,7 @@ const initChart = async () => {
>
<div>
<div style="color: #fff; letter-spacing: 0.14px; display: flex; align-items: center">
<div style="font-size: 16px">${params.data.name}</div>
<div style="font-size: 16px">${params.data.nodeName}</div>
<div
style="
margin-left: 10px;
@ -197,7 +220,7 @@ const initChart = async () => {
>
<div>
<div style="color: #fff; letter-spacing: 0.14px; display: flex; align-items: center">
<div style="font-size: 16px">${params.data.name}</div>
<div style="font-size: 16px">${params.data.nodeName}</div>
<div
style="
margin-left: 10px;
@ -207,7 +230,7 @@ const initChart = async () => {
font-size: 12px;
"
>
普通自媒体
${params.data.label}
</div>
</div>
</div>

View File

@ -35,6 +35,13 @@ const props = defineProps({
}
})
const sortAnchorMonitorListByTime = (anchorMonitorList) => {
return anchorMonitorList.sort((a, b) => {
//
return new Date(a.time.trim()) - new Date(b.time.trim());
})
}
props.anchorMonitorList = sortAnchorMonitorListByTime(props.anchorMonitorList)
const startAutoScroll = () => {
if (!monitorListRef.value) return
scrollTimer = setInterval(() => {

View File

@ -93,8 +93,21 @@ const updateChart = () => {
],
tooltip: {
trigger: "item",
formatter: "{a} <br/>{b}: {c}% ({d}%)"
formatter: "{a} <br/>{b}: {c}%"
},
// tooltip: {
// trigger: "item",
// formatter: function(params) {
// console.log(params)
// // //
// const total = chartData.reduce((sum, item) => sum + item.value, 0)
// // //
// const item = chartData.find((item) => item.name === params.name)
// const percentage = total > 0 ? ((item.value / total) * 100).toFixed(1) + "%" : "0%"
// return `<br/>
// ${params.data.name}: ${percentage}(${params.data.value})`
// }
// },
legend: {
orient: "vertical", //
top: "center", //

View File

@ -354,7 +354,7 @@ const renderHotChart = () => {
itemStyle: { color: "#4AC6FF", borderColor: "#fff", borderWidth: 2 },
lineStyle: { color: "#4AC6FF", width: 2 },
areaStyle: { color: "rgba(74,198,255,0.15)" },
label: { show: true, position: "top", color: "#4AC6FF", fontSize: 12 },
label: { show: true, position: "bottom", color: "#4AC6FF", fontSize: 12 },
padding: [0, 0, 0, 30]
},
{

View File

@ -42,7 +42,8 @@
</svg>
</div>
<div class="content-wrapper">
<img src="@/assets/images/chuanboGraphTitle.png" alt="" />
<img src="@/assets/images/chuanboGraphTitle.png" class="graph-img-title" alt="" />
<div class="chart-container">
<DynamicGraph
ref="leaderGraphRef"
@ -206,7 +207,8 @@ const trackStyle = computed(() => {
defineExpose({ highlightNode });
</script>
<style scoped>
<style scoped lang="less">
.right-panel {
flex-grow: 1;
position: relative;
@ -232,8 +234,14 @@ defineExpose({ highlightNode });
display: flex;
flex-direction: column;
height: 100%;
padding: 15px 20px;
padding: 0px 20px;
box-sizing: border-box;
.graph-img-title {
display: absolute;
top: 0;
margin: 0 auto;
}
}
.chart-container {
flex-grow: 1;
@ -246,7 +254,7 @@ defineExpose({ highlightNode });
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 10px;
padding: 0px 10px;
box-sizing: border-box;
background-color: rgba(4, 67, 92, 0.6);
border-radius: 5px;

View File

@ -42,7 +42,8 @@
</svg>
</div>
<div class="content-wrapper">
<img src="@/assets/images/peiluoxi.png" alt="" />
<img src="@/assets/images/peiluoxi.png" class="graph-img-title" alt="" />
<div class="chart-container">
<DynamicGraph
ref="leaderGraphRef"
@ -183,7 +184,7 @@ const trackStyle = computed(() => {
defineExpose({ highlightNode });
</script>
<style scoped>
<style scoped lang="less">
.right-panel {
flex-grow: 1;
position: relative;
@ -209,8 +210,13 @@ defineExpose({ highlightNode });
display: flex;
flex-direction: column;
height: 100%;
padding: 15px 20px;
padding: 0px 20px;
box-sizing: border-box;
.graph-img-title {
display: absolute;
top: 0;
margin: 0 auto;
}
}
.chart-container {
flex-grow: 1;

View File

@ -140,7 +140,7 @@ const analysisChartData = ref([
const wordCloudData = ref([
{
text: "佩洛西",
text: "Pelosi",
top: 115.5,
left: 215.5,
width: 109,
@ -148,10 +148,10 @@ const wordCloudData = ref([
fontSize: 28,
opacity: 1
},
{ text: "中国", top: 183.5, left: 69.5, width: 73, height: 35, fontSize: 22, opacity: 1 },
{ text: "China", top: 183.5, left: 69.5, width: 73, height: 35, fontSize: 22, opacity: 1 },
{
text: "中国人民解放军",
top: 72.5,
top: 60.5,
left: 132.5,
width: 123,
height: 22,
@ -167,11 +167,11 @@ const wordCloudData = ref([
fontSize: 14,
opacity: 0.8
},
{ text: "台独", top: 135.5, left: 42.5, width: 57, height: 24, fontSize: 16, opacity: 1 },
{ text: "台独", top: 120.5, left: 35.5, width: 57, height: 24, fontSize: 16, opacity: 1 },
{
text: "台海和平",
top: 228.5,
left: 230.5,
left: 260.5,
width: 81,
height: 22,
fontSize: 14,
@ -179,7 +179,7 @@ const wordCloudData = ref([
},
{
text: "坚决反对",
top: 233.5,
top: 225.5,
left: 38.5,
width: 73,
height: 19,
@ -187,9 +187,9 @@ const wordCloudData = ref([
opacity: 0.7
},
{
text: "联合公报",
top: 241.5,
left: 130.5,
text: "Joint Communique",
top: 230.5,
left: 120.5,
width: 73,
height: 19,
fontSize: 12,
@ -197,19 +197,19 @@ const wordCloudData = ref([
},
{
text: "有力反制",
top: 211.5,
left: 143.5,
top: 200.5,
left: 180.5,
width: 73,
height: 19,
fontSize: 12,
opacity: 1
},
{ text: "白宫", top: 176.5, left: 15.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 },
{ text: "内政", top: 87.5, left: 36.5, width: 53, height: 22, fontSize: 14, opacity: 1 },
{ text: "访台", top: 103.5, left: 95.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 },
{ text: "领土", top: 57.5, left: 72.5, width: 49, height: 19, fontSize: 12, opacity: 0.6 },
{ text: "原则", top: 77.5, left: 264.5, width: 49, height: 19, fontSize: 12, opacity: 0.7 },
{ text: "台湾", top: 195.5, left: 287.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 }
{ text: "White House", top: 160.5, left: 15.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 },
{ text: "Internal Affairs", top: 80.5, left: 30.5, width: 53, height: 22, fontSize: 14, opacity: 1 },
{ text: "访台", top: 110.5, left: 95.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 },
{ text: "Territory", top: 40.5, left: 72.5, width: 49, height: 19, fontSize: 12, opacity: 0.6 },
{ text: "Principle", top: 77.5, left: 264.5, width: 49, height: 19, fontSize: 12, opacity: 0.7 },
{ text: "Taiwan", top: 195.5, left: 287.5, width: 49, height: 19, fontSize: 12, opacity: 0.8 }
])
</script>

View File

@ -244,7 +244,6 @@ onBeforeUnmount(() => {
rgba(6, 143, 220, 0.51) 92%,
rgba(0, 151, 225, 0.6) 100%
);
border: 1px solid transparent;
border-image-source: linear-gradient(
135deg,
rgba(63, 169, 245, 0) 0%,

View File

@ -244,7 +244,6 @@ onBeforeUnmount(() => {
rgba(6, 143, 220, 0.51) 92%,
rgba(0, 151, 225, 0.6) 100%
);
border: 1px solid transparent;
border-image-source: linear-gradient(
135deg,
rgba(63, 169, 245, 0) 0%,