// ==UserScript== // @name CF解题数据可视化 // @name:en codeforces analytics // @namespace https://codeforces.com/profile/tongwentao // @version 1.1.1 // @description 显示某人Codeforces每个难度过了多少题,每个标签占比 // @description:en Analyse Codeforces profiles // @author tongwentao // @match https://codeforces.com/profile/* // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== // @grant none // @require https://cdn.jsdelivr.net/npm/echarts@5.4.2/dist/echarts.min.js // @license MIT // @downloadURL none // ==/UserScript== (function() { 'use strict'; function drawChart(res){ var div='
'; document.getElementById('pageContent').insertAdjacentHTML('beforeend',div); var chartDom = document.getElementById('twtschart1'); var myChart = echarts.init(chartDom); var option; var key; var xData1=[]; var yData1=[]; xData1=Object.keys(res.rating); for(key in xData1){ yData1.push(res.rating[xData1[key]]); } option = { tooltip: { trigger: 'axis', axisPointer: { type: 'shadow' } }, grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true }, xAxis: [ { type: 'category', data: xData1, axisTick: { alignWithLabel: true } } ], yAxis: [ { type: 'value' } ], series: [ { name: 'solved', type: 'bar', barWidth: '60%', data: yData1 } ] }; option && myChart.setOption(option); div=''; document.getElementById('pageContent').insertAdjacentHTML('beforeend',div); chartDom = document.getElementById('twtschart2'); myChart = echarts.init(chartDom); var data2=[]; for(key in res.tags){ var tag=res.tags[key]; data2.push({value:tag,name:key}); } data2.sort(function(nextValue,currentValue){ if(nextValue.value