<template>
<!-- 图表 -->
<div id="Line1"></div>
</template>
<script>
// 导入
import {
Line } from '@antv/g2plot'
export default {
mounted () {
// 数据源
const dataSource = [
{
title: '1998年5月',
team: '三水集团',
time: '1998',
num: 500
},
{
title: '1999年5月',
team: '三水集团',
time: '1999',
num: 400
},
{
title: '2021年5月',
team: '三水集团',
time: '2021',
num: 1000
},
{
title: '1998年6月',
team: '笑笑集团啊',
time: '1998',
num: 1000
},
{
title: '1999年6月',
team: '笑笑集团啊',
time: '1999',
num: 100
},
{
title: '2021年6月',
team: '笑笑集团啊',
time: '2021',
num: 500
}
]
// 创建
const line = new Line('Line1', {
// 数据源
data: dataSource,
// x轴对应key,横向线
xField: 'time',
// y轴对应key,竖向线
yField: 'num',
// 分组对应 key,多组数据
seriesField: 'team',
// 线条是否为弧度
smooth: true,
// x轴配置
xAxis: {
},
// 提示
tooltip: {
// 标题,设置的值,如果为字段key,则会从数据源中取值显示,如果数据源没有该key,则直接显示
title: 'title',
// 自定义,class 必须跟官方的样式一致
containerTpl: `
<div class="g2-tooltip">
<!-- 标题容器,会自己填充 -->
<div class="g2-tooltip-title"></div>
<!-- 自定义头部,可以随便写 -->
<div class="g2-tooltip-title">自定义头部</div>
<!-- 列表容器,会自己填充 -->
<ul class="g2-tooltip-list"></ul>
<!-- 自定义尾部,可以随便写,这里是复用列表容器中的一行 item -->
<li class="g2-tooltip-list-item">
<span class="g2-tooltip-marker"></span>
<span class="g2-tooltip-name">自定义尾部</span>:
<span class="g2-tooltip-value">100000</span>
</li>
</div>
`,
// 自定义列表 item 模板,class 必须跟官方的样式一致
itemTpl: `
<li class="g2-tooltip-list-item">
<span class="g2-tooltip-marker" style="background-color: {color};"></span>
<span class="g2-tooltip-name">{name}</span>:
<span class="g2-tooltip-value">{value}</span>
</li>
`,
// 完全自定义提示框
// customContent: (title, items) => {
// return `<div>${title}</div>`
// },
// 允许鼠标滑入,这个开启是为了方便获取 tooltip 的 class,无需要可以关闭。
enterable: true,
// 是否显示 hover 辅助线
showCrosshairs: true,
// 辅助线配置
crosshairs: {
// x 表示 x 轴上的辅助线,y 表示 y 轴上的辅助线,xy 表示两条辅助线
type: 'x',
// 辅助线是否跟随鼠标移动
follow: false,
// 辅助线配置
line: {
// 样式配置
style: {
// 线宽
lineWidth: 10
}
}
}
},
// 图例列表
legend: {
// y轴偏移
offsetY: 15,
// 摆放位置
position: 'bottom',
// 图例高度
itemHeight: 28,
// 配置图例
marker: {
// 图例样式
style: (style) => {
// 重组样式
return {
// 半径
r: 6,
// 样式类型
symbol: 'square',
// 填充
fill: style.fill || style.stroke,
// 边框线宽
lineWidth: 1,
// 边框填充颜色
stroke: style.fill || style.stroke,
// 边框透明度
strokeOpacity: 1,
// 线圆角
lineCap: 'round',
lineJoin: 'round'
}
}
}
},
// 主题配置
theme: {
// 分类个数小于 10 时使用
colors10: ['#A685FF', '#FBD86D']
// 分类个数大于 10 时使用
// colors20: ['#A685FF', '#FBD86D']
},
// 动画配置
// https://g2plot.antv.vision/zh/docs/api/options/animation
animation: {
// 配置图表第一次加载时的入场动画
appear: {
// 动画效果
animation: 'wave-in',
// 动画执行时间
duration: 2000
}
}
})
// 绘制
line.render()
// 更新配置
// line.update({ xField: 'num' })
// 更新数据
// line.changeData(dataSource)
// 销毁
// line.destroy()
}
}
</script>
文章浏览阅读2.1k次。继续ctf的旅程,攻防世界Misc高手进阶区的4分题,本篇是red_green的writeup_ctf red_green
文章浏览阅读4.3k次。原标题:一键生成各种姿势的火柴人gif:在线录制视频即可转换 | 代码开源本文授权转载自公众号:量子位子豪 发自 凹非寺量子位 报道 | 公众号 QbitAI现在,只需用摄像头录制真人视频,就能一键生成火柴人gif。 来自谷歌的工程师小哥Ken Kawamoto就利用PoseNet开发了这样一个网站—— stickfigure-recorder。 △Ken Kawamoto用这个网站生成火柴人gi..._火柴人代码生成器
文章浏览阅读1w次。文章搬家至https://lcy362.github.io/posts/57802/对于一个java object的序列化,想测一下使用json和使用一般序列化工具,在时间性能、空间性能上的区别。json选择用fastjson.序列化工具使用了protostuff和kyro. 为什么不用protobuf呢?因为感觉对于一个已有的上百个属性的java class来说,再去新建一个匹配的p..._kryo protobuf 性能比较
文章浏览阅读354次。1、jackson ObjectMapper能够方便的从string、stream和file将json转换为相应的object或者object graph;反之亦然(同时还能处理CBOR、MessagePack、YAML等格式的文件)。2、支持serialize和derialize为collection:JSON Array String -> Object Array;JSON Array String -> Object List;JSON String -> Map3、_jackson 反序列化工具类
文章浏览阅读5.1k次,点赞5次,收藏6次。全局安装vue/cli3之后使用vue create project_name命令搭建项目使用VS Code打开(其实不管你用啥打开都一样,编辑器无罪)编辑后保存会报错:解决办法:1. 右键点击文件夹️显示简介️共享与权限️_创建vue-cli脚手架后,显示无权限修改文件
文章浏览阅读583次。图像分块处理是一种在图像处理中常用的技术,它将图像划分为若干个块,并对每个块进行独立的处理。图像分块处理的基本原理是将图像分割为多个块,然后对每个块进行相应的处理。这种处理方式可以提高图像处理的效率,并且可以针对不同的块设置不同的处理算法,以实现更精确的图像处理效果。除了简单的像素值处理外,图像分块处理还可以用于更复杂的图像处理任务,如图像滤波、图像特征提取等。总结起来,图像分块处理是一种常用的图像处理技术,它可以提高图像处理的效率并实现更精确的处理效果。函数对图像进行分块处理,并将处理后的图像显示出来。_如何将图像进行分块处理
文章浏览阅读837次,点赞4次,收藏12次。官方文档config详情:https://mmdetection.readthedocs.io/en/latest/tutorials/config.html1、配置文件结构在config/_base_文件夹下面总共有4个基础的组件,它们分别是:dataset、model、schedule、default_runtime。2、配置文件命名风格{model}_[model setting]_{backbone}_{neck}_[norm setting]_[misc]_[gpu x batch_p._mmation2 v1.1.0 中config中slowfast配置文件注释说明
文章浏览阅读637次,点赞11次,收藏15次。else语句、逻辑运算符、比较关系运算符、运算符优先级、while循环语法格式、while嵌套应用、break的用法、continue的用法、列表概念及操作、元组概念及操作、字典概念及操作、字符串概念及操作、集合概念及操作、for循环及for…else用法、函数的基本语法、函数执行流程、文档注释、带参数的函数、带返回值的函数、函数的嵌套调用、匿名函数、递归函数、局部变量和全局变量、引用、文件的概念、文件的打开与关闭、文件读写, 以及文件定位读写、文件、目录相关操作。import * 用法。
文章浏览阅读1.7k次。在我们序列化的过程中,肯定会遇到嵌套序列化,不管是一对多嵌套还是多对一嵌套,在序列化器中我们使用参数source就解决了,为了解决N+1问题,我们使用select_related和prefetch_related就可以解决,但是还有一个问题就是在嵌套的过程中我们要对第二个序列化器的数据进行筛选,比如要id_delete=False,怎么办那?解决办法:class FilterdListSerializer(ListSerializer): def to_representation(self, _drf嵌套序列化
文章浏览阅读374次。之前配置好的环境ip,因虚拟机重启ip发生了变化,导致不得重新修改回来,更惨的是改回来后发现ip已经被占用,说明之前配置好的测试环境要从头来过。此刻深深深深的意识到静态ip的很重要性,当时一脸懵的配置,却没有将ip设置为固定ip。打开配置文件,设置静态ip使用xshell连接虚拟机,进入配置文件目录#vim /etc/sysconfig/network-scripts/ifcfg-eth02.重启虚拟机,查看修改后的ip信息#reboot#ifconfig备注:查看电脑ip以及网关等信_请将虚拟机的ip地址改为静态地址192.168.159.101
文章浏览阅读2.4w次,点赞13次,收藏49次。直接上截图吧简单总结:ls -l /etc/passwd ##查看权限;权限为读写lsattr /etc/passwd ##若出现i---e ,执行(1);否则(2)chattr -i /etc/passwd ##(1)useradd zhangsan ##(1)sudo useradd zhangsan##(2);当然也可以直接执行这一步..._无法锁定 /etc/passwd,请稍后再试。
文章浏览阅读1.6k次。这篇文章介绍了基于virtio-blk的加速技术virtio-blk-data-plane,转过来收藏下,当然这个技术在当前业界的应用中正逐步被vhost_user机制取代,后续一起关注。原文地址:http://blog.csdn.net/memblaze_2011/article/details/48808147为了充分利用服务器资源,根据工作负载动态配置服务器,减少服务部署周期等..._qemu dataplane