From 937a53c587bd879125926ff6d0ae971389e5a3d6 Mon Sep 17 00:00:00 2001 From: zhangzhonghe <958414905@qq.com> Date: Tue, 22 Sep 2020 13:39:38 +0800 Subject: [PATCH 1/5] =?UTF-8?q?feat:=20imageMask=E9=80=89=E9=A1=B9?= =?UTF-8?q?=E6=94=AF=E6=8C=81url=E5=AD=97=E7=AC=A6=E4=B8=B2=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/word-cloud/basic/API.en.md | 4 +- examples/word-cloud/basic/API.zh.md | 4 +- examples/word-cloud/basic/demo/image-mask.ts | 44 +++++++++----------- src/plots/word-cloud/index.ts | 16 +++++++ src/plots/word-cloud/types.ts | 4 +- src/plots/word-cloud/utils.ts | 31 ++++++++++++-- 6 files changed, 68 insertions(+), 35 deletions(-) diff --git a/examples/word-cloud/basic/API.en.md b/examples/word-cloud/basic/API.en.md index fb6cdeda60..b9d964e68b 100644 --- a/examples/word-cloud/basic/API.en.md +++ b/examples/word-cloud/basic/API.en.md @@ -46,9 +46,9 @@ #### imageMask -**可选**, _HTMLImageElement_ +**可选**, _HTMLImageElement \| string_ -功能描述: 设置一张图片,然后图表就可以根据该图片的形状进行渲染,必须是已加载完成的图片对象 +功能描述: 设置一张图片,然后图表就可以根据该图片的形状进行渲染,可以是图片元素实例或者 url 地址和 base64 默认配置: 无 diff --git a/examples/word-cloud/basic/API.zh.md b/examples/word-cloud/basic/API.zh.md index c566d7b871..94ee9a4b03 100644 --- a/examples/word-cloud/basic/API.zh.md +++ b/examples/word-cloud/basic/API.zh.md @@ -46,9 +46,9 @@ #### imageMask -**可选**, _HTMLImageElement_ +**可选**, _HTMLImageElement \| string_ -功能描述: 设置一张图片,然后图表就可以根据该图片的形状进行渲染,必须是已加载完成的图片对象 +功能描述: 设置一张图片,然后图表就可以根据该图片的形状进行渲染,可以是图片元素实例或者 url 地址和 base64 默认配置: 无 diff --git a/examples/word-cloud/basic/demo/image-mask.ts b/examples/word-cloud/basic/demo/image-mask.ts index 7cfc4d5df5..eac9a2a5bf 100644 --- a/examples/word-cloud/basic/demo/image-mask.ts +++ b/examples/word-cloud/basic/demo/image-mask.ts @@ -1,28 +1,22 @@ import { WordCloud } from '@antv/g2plot'; -const imageMask = new Image(); -imageMask.crossOrigin = ''; -imageMask.src = 'https://gw.alipayobjects.com/mdn/rms_2274c3/afts/img/A*07tdTIOmvlYAAAAAAAAAAABkARQnAQ'; - -// 等待图片加载完成 -imageMask.onload = () => { - fetch('https://gw.alipayobjects.com/os/antvdemo/assets/data/antv-keywords.json') - .then((res) => res.json()) - .then((data) => { - const wordCloud = new WordCloud('container', { - data, - // 宽高设置最好根据 imageMask 做调整 - width: 600, - height: 400, - wordField: 'name', - weightField: 'value', - imageMask, - wordStyle: { - fontFamily: 'Verdana', - fontSize: [8, 32], - }, - }); - - wordCloud.render(); +fetch('https://gw.alipayobjects.com/os/antvdemo/assets/data/antv-keywords.json') + .then((res) => res.json()) + .then((data) => { + const wordCloud = new WordCloud('container', { + data, + // 宽高设置最好根据 imageMask 做调整 + width: 600, + height: 400, + autoFit: false, + wordField: 'name', + weightField: 'value', + imageMask: 'https://gw.alipayobjects.com/mdn/rms_2274c3/afts/img/A*07tdTIOmvlYAAAAAAAAAAABkARQnAQ', + wordStyle: { + fontFamily: 'Verdana', + fontSize: [8, 32], + }, }); -}; + + wordCloud.render(); + }); diff --git a/src/plots/word-cloud/index.ts b/src/plots/word-cloud/index.ts index 6ee25a6f07..9673d83faa 100644 --- a/src/plots/word-cloud/index.ts +++ b/src/plots/word-cloud/index.ts @@ -3,6 +3,7 @@ import { Plot } from '../../core/plot'; import { Adaptor } from '../../core/adaptor'; import { WordCloudOptions } from './types'; import { adaptor } from './adaptor'; +import { processImageMask } from './utils'; // 注册的shape import './shapes/word-cloud'; @@ -36,6 +37,21 @@ export class WordCloud extends Plot { }); } + /** + * 覆写父类方法,词云图需要加载图片资源,所以需要异步渲染 + */ + public render() { + processImageMask(this.options.imageMask, (img) => { + this.options = { + ...this.options, + imageMask: img || null, + }; + + // 调用父类渲染函数 + super.render(); + }); + } + /** * 获取 词云图 的适配器 */ diff --git a/src/plots/word-cloud/types.ts b/src/plots/word-cloud/types.ts index dda1e7a43e..aeb9214400 100644 --- a/src/plots/word-cloud/types.ts +++ b/src/plots/word-cloud/types.ts @@ -58,8 +58,8 @@ export interface WordCloudOptions extends Options { readonly wordField: string; /** 词条权重字段 */ readonly weightField: string; - /** 遮罩图片实例 */ - readonly imageMask?: HTMLImageElement; + /** 遮罩图片实例,可以是图片 URL 或者 base64 */ + readonly imageMask?: HTMLImageElement | string; /** 最大执行时间 */ readonly timeInterval?: number; /** 文字样式配置 */ diff --git a/src/plots/word-cloud/utils.ts b/src/plots/word-cloud/utils.ts index f58d95bd45..fdb4e2d6a9 100644 --- a/src/plots/word-cloud/utils.ts +++ b/src/plots/word-cloud/utils.ts @@ -1,6 +1,6 @@ import { Chart, View } from '@antv/g2'; import DataSet from '@antv/data-set'; -import { isArray, isFunction, isNumber } from '@antv/util'; +import { isArray, isFunction, isNumber, isString } from '@antv/util'; import { Params } from '../../core/adaptor'; import { log, LEVEL, getContainerSize } from '../../utils'; import { WordCloudOptions } from './types'; @@ -23,7 +23,7 @@ export function transform(params: Params) { dv.transform({ type: 'tag-cloud', fields: [wordField, weightField], - imageMask: getImageMask(imageMask), + imageMask: imageMask as HTMLImageElement, font: fontFamily, fontSize: getFontSize(options, range), fontWeight: fontWeight, @@ -105,8 +105,31 @@ function normalPadding(padding: number | number[] | 'auto'): [number, number, nu return [0, 0, 0, 0]; } -function getImageMask(img: HTMLImageElement) { - return img; +/** + * 处理 imageMask 可能为 url 字符串的情况 + * @param img 可以是图片元素实例,url 地址,或者 bese64 + * @param cb 最终的图片对象通过回调函数传出 + */ +export function processImageMask(img: HTMLImageElement | string, cb?: (img?: HTMLImageElement) => void) { + if (img instanceof HTMLImageElement) { + cb(img); + return; + } + if (isString(img)) { + const image = new Image(); + image.crossOrigin = 'anonymous'; + image.src = img; + image.onload = () => { + cb(image); + }; + image.onerror = () => { + log(LEVEL.ERROR, false, 'image %s load failed !!!', img); + cb(); + }; + return; + } + log(LEVEL.WARN, img === undefined, 'the type of imageMask option must be String or Object.'); + cb(); } /** From e5c21452479765e1a07be67d3237d4ab68d590d5 Mon Sep 17 00:00:00 2001 From: zhangzhonghe <958414905@qq.com> Date: Tue, 22 Sep 2020 19:06:39 +0800 Subject: [PATCH 2/5] =?UTF-8?q?chore:=20=E4=BC=98=E5=8C=96=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/plots/word-cloud/index.ts | 10 +++++++++- src/plots/word-cloud/utils.ts | 16 ++++++++-------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/plots/word-cloud/index.ts b/src/plots/word-cloud/index.ts index 9673d83faa..55f341145f 100644 --- a/src/plots/word-cloud/index.ts +++ b/src/plots/word-cloud/index.ts @@ -41,7 +41,15 @@ export class WordCloud extends Plot { * 覆写父类方法,词云图需要加载图片资源,所以需要异步渲染 */ public render() { - processImageMask(this.options.imageMask, (img) => { + const { imageMask } = this.options; + + if (!imageMask) { + // 调用父类渲染函数 + super.render(); + return; + } + + processImageMask(imageMask, (img) => { this.options = { ...this.options, imageMask: img || null, diff --git a/src/plots/word-cloud/utils.ts b/src/plots/word-cloud/utils.ts index fdb4e2d6a9..3eb18b4e23 100644 --- a/src/plots/word-cloud/utils.ts +++ b/src/plots/word-cloud/utils.ts @@ -107,12 +107,12 @@ function normalPadding(padding: number | number[] | 'auto'): [number, number, nu /** * 处理 imageMask 可能为 url 字符串的情况 - * @param img 可以是图片元素实例,url 地址,或者 bese64 - * @param cb 最终的图片对象通过回调函数传出 + * @param img + * @param callback */ -export function processImageMask(img: HTMLImageElement | string, cb?: (img?: HTMLImageElement) => void) { +export function processImageMask(img: HTMLImageElement | string, callback?: (img?: HTMLImageElement) => void) { if (img instanceof HTMLImageElement) { - cb(img); + callback(img); return; } if (isString(img)) { @@ -120,16 +120,16 @@ export function processImageMask(img: HTMLImageElement | string, cb?: (img?: HTM image.crossOrigin = 'anonymous'; image.src = img; image.onload = () => { - cb(image); + callback(image); }; image.onerror = () => { log(LEVEL.ERROR, false, 'image %s load failed !!!', img); - cb(); + callback(); }; return; } - log(LEVEL.WARN, img === undefined, 'the type of imageMask option must be String or Object.'); - cb(); + log(LEVEL.WARN, img === undefined, 'the type of imageMask option must be String or HTMLImageElement.'); + callback(); } /** From 7d2df3c3e8600889ed592e85469a8c02cc001e42 Mon Sep 17 00:00:00 2001 From: zhangzhonghe <958414905@qq.com> Date: Tue, 22 Sep 2020 22:26:33 +0800 Subject: [PATCH 3/5] =?UTF-8?q?docs:=20=E6=B7=BB=E5=8A=A0base64=E7=A4=BA?= =?UTF-8?q?=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/word-cloud/basic/API.en.md | 2 ++ examples/word-cloud/basic/API.zh.md | 2 ++ .../basic/demo/image-mask-base64.ts | 21 +++++++++++++++++++ examples/word-cloud/basic/demo/image-mask.ts | 2 -- examples/word-cloud/basic/demo/meta.json | 8 +++++++ src/plots/word-cloud/index.ts | 1 - src/plots/word-cloud/utils.ts | 2 +- 7 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 examples/word-cloud/basic/demo/image-mask-base64.ts diff --git a/examples/word-cloud/basic/API.en.md b/examples/word-cloud/basic/API.en.md index b9d964e68b..e6d0d5e5b6 100644 --- a/examples/word-cloud/basic/API.en.md +++ b/examples/word-cloud/basic/API.en.md @@ -50,6 +50,8 @@ 功能描述: 设置一张图片,然后图表就可以根据该图片的形状进行渲染,可以是图片元素实例或者 url 地址和 base64 +注意: 图片的词语只渲染在图片的深色部位,浅色的部位(如白色)不渲染词语 + 默认配置: 无 #### wordStyle diff --git a/examples/word-cloud/basic/API.zh.md b/examples/word-cloud/basic/API.zh.md index 94ee9a4b03..e4786cf18a 100644 --- a/examples/word-cloud/basic/API.zh.md +++ b/examples/word-cloud/basic/API.zh.md @@ -50,6 +50,8 @@ 功能描述: 设置一张图片,然后图表就可以根据该图片的形状进行渲染,可以是图片元素实例或者 url 地址和 base64 +注意: 图片的词语只渲染在图片的深色部位,浅色的部位(如白色)不渲染词语 + 默认配置: 无 #### wordStyle diff --git a/examples/word-cloud/basic/demo/image-mask-base64.ts b/examples/word-cloud/basic/demo/image-mask-base64.ts new file mode 100644 index 0000000000..eaebe05331 --- /dev/null +++ b/examples/word-cloud/basic/demo/image-mask-base64.ts @@ -0,0 +1,21 @@ +import { WordCloud } from '@antv/g2plot'; + +fetch('https://gw.alipayobjects.com/os/antvdemo/assets/data/antv-keywords.json') + .then((res) => res.json()) + .then((data) => { + const wordCloud = new WordCloud('container', { + data, + width: 600, + height: 400, + wordField: 'name', + weightField: 'value', + imageMask: + 'data:image/jpeg;base64,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/G2AZOp4OF6fLkZrPjiWMuw3F3bc7uxZnPTLMeSeByafQAAAAADAHaiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAGhWjuI7mCWSC5j+5PEdrr3xnuMgZByDjkGus0fx1JBtt9cTcnAF9CvH/bRB07fMuRySQgFcrRQB7HDNFcQJNBIksUihkdGDKwPIII6in15Dpmp3+hTGXTZFEbNuktJP9VIc5J9UY5PzD1yQ2AK9F0LxLYa8jLCWhu0GZLWXAkUeo7MvI+YZHY4OQADZooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAqhq2sWeiWRur2TapbYiKMvI3ZVHc8E+wBJwATVTxD4ktdBgVSBPeyg+Raq2C/wDtE/woO7Y9gCSAfNrm4utQvDe6hOZ7kghTjCRKcZVF/hHA9zgZJwKALWs61feIJT9rzDZBg0dkpyOOjSH+Ns84+6DjGSoY0qKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKQgiSOWOR4p4m3RTRnDxt6g/TII6EEg5BIpaKAOz8O+M/OeLT9ZKx3LMEiuwNscxPQN/cc9PRjjGCQo7OvF3RJY2jdVZGBVlYZBB6g10Ph7xbNpDra6rM8+nHhLmQlnt/wDfPVk/2jyvfK8qAej0U1HWRFdGDIwyrKcgj1FOoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK53xP4nTRYxa2oSbU5V3JE33Y16eZJjtkHA6sQQMAMynifxMmixi1tQkupzLujjbJWNenmPjtnOBwWIwMAMy+dAMZJJZZXmnlbfLNIctI3qfyAAHAAAAAAFAAfMknluJ5XnuZjulmf7zn+gHYDgdqWiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKANTw94hm8OSCFw8uksfniUFmt/9qMd19UH1Xn5W9OgniuYI54JUlhkUOkiMGVlIyCCOoIrx2tPw/wCIJfDlwVcP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sp3H8MbH9KmqtqAzpt0PWF/5GgD2m0QR2UCDosaj8hU1MhOYIyO6j+VPoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA4Dx98utaf/ALdvL+jJ/wDFVzFdP8QOdZ0r2t5//Qo/8K5igAooooAKKKKACiiigAooooAKKKKAPNPiEM6/B/16r/6E9FL8Qv8AkPwf9eq/+hPRSKR3eiAjQNOBGCLWL/0EVfoZY457iCIYjguJYFHsjsn/ALLRTJCiiigAooooAKKKKACiiigApsiCSJ0PRlIp1FAHrGi3K3ug6ddKcrNbRyD6MoP9avVi+EAq+DdGiBB8mzihOD/EihSPzBraoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA888czK/iKCDPzw2gcj2d2H/tOucrZ8YhX8ZTyqQdtnBC2D0YNI2PykH51jUAFFFFABRRRQAUUUUAFFFFABRRRQB5t8QUkbX4CiMw+yryAT/E1Few+H/Ddh4hgu57mMtJb3HkZHpsR//Z6KQzMvLZrTV9TgdgW+3TyH2EkjSAfk4qKtHxJbtb+L9VLtnz2inQei+Uifzjas6mIKKKKACiiigAooooAKKKKACiiigDvfh9JF/wAIybZH3yW13OsvH3WdzKB/3zItdTXC/D2cpdatZCMKhMV0Hzy7sCjfkIo/++veu6oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoopGZUQszBVAySTgAUAeSavJFceJ9ZuYX3xy3W36NGiRMP++o2qrUNrK1zALqSLyZbpmuZY/7ryEuw/76Y1NQAUUUUAFFFFABRRRQAUUUUAFFFFAHcfD22aHSL+csCtzfNInsBHHGf1Q0Vc8DW7W/hCzDNu81pZ1P+zJK7r+jCigDm/HUCw+J7W43fPdWZQL6CJ8k/wDkYflXP12nxCtmay068jjBMVyY5HP8Ebo383WMVxdABRRRQAUUUUAFFFFABRRRQAUUUUAafhe5Fp4vsHIJFwktqTnAXcA4J/GI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FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABU2n6dc6zqSadaEoxAeeYDPkR5+9zxuOCFB6nJwQrYiijnuruKys4vOu5s+XHnAwOrMeyjufoBkkA+oeH9Dh0HTRbI/myuxknmK7TLIQATjsMAADnAAGT1oAu2FjbaZYw2VpEI4IV2ouSfxJPJJ6knkkkmrFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABTXRJI2jkUMjAhlYZBHoadRQB5b4h8PP4cuA8QZtJlYLE55+zsTxGx/uk8K3/AAE87d2XXsU8EVzbyQTxJLDKpSSN1DK6kYIIPUEV5h4g8Py+G5w6l5dKkYLFMxLNAx6RyHuCeFc9eFb5sFwDMooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApDvaSOGGJ5riZtkUKfekbrgfgCSTwACSQATQS7SRwwxPNcTNsihjGWkb0HbsSScAAEkgAmvRPDHhddFQ3d2yTanKu2SReViXr5ceecZAyeCxAJwAqqAP8L+G10O2aa4ZJdRnA86VfuqOyJn+EevUnk44A6CiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACmTQxXEEkE8aSxSKUdHUMrKRggg9QafRQB5j4h8MzeH993blptJHLFiWe1H+1/eQf3uq98jLDHr2auA8QeDHsg15ocReHOZLBf4R/ei/qnTH3cEbWAOYopsciypuQ5GSORggg4II7EEEEHoRTqACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACljiuLq6is7OEz3cudkYOBgdWY/wqMjJ9wBkkAzafp97rN4bTTkBZSBNO4Jjg7/ADerYOQg5ORnaDuHpWh+H7LQLZ47YO8smDNcSkGSQjpkgAYGTgAADJ45NAFTw34Xh0NDPM4uNRlXbJPjAVeuxB2XIHuSAT0AHQUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBzPiHwhb6q73tmy2upHBL4+SbAxiQDrxgBhyMDqBtPAzw3FldtZ30DW90oJ2NyHA/iRujLyOR0yAQDxXslUtT0mx1i0+zX9us0edy5JDI2CNysMFTgnkEHk0AeTUVr6x4V1PRiZYhJqNkP4448zR/wC8ij5vqo7/AHQATWLHLHNGskTq8bDKspyCPY0APooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoopbaK4vrv7JYW73VzxuROkYPQu3RRwevXBwCeKAGO6RRtJIyoiglmY4AHqTW3ofha91tknuhJZadnOTlZpx6KP4FP948kZwBkNXQaF4JgspI7zVWS8vEIZEA/cwMDnKg/eYHHzN6ZAXJrraAK9jYWumWcdpZQJDBGPlRB6nJJ9SSSSTySSTViiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK5vW/Bljqkkl1asbG/flpo1ykhx/y0TIDduRhuAN2OK6SigDyDVNPv8AQmP9qW/lQ5wLqMloDzgZbA2HkDDAZJwN1QV7MRkYPSuR1LwDYTZk0mT+zZP+eSJugPT/AJZ5G3gH7hUZOSDQBw9FWdR0vU9GBbUrJo4VGTcwnzIQMZJLYBUAdS4UemaqqyuoZWDKwyCDkEUALRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFNDh7hbaJXmuGG4QwoZHIzjO1cnGTyeg70AOpjyqskcQDvNLkRxRoXkkxydqjJbA5OBwOa6PTfBOqX+H1CUabAf+WabZJz+PKJ/4/kHsa7XStC03RI3WwtVjaTHmSklpJMZxuc5Jxk4BPGeMUAcbpPgi/vSsurObK3/AOfaJgZnHozjIQdfu5ODkMprudP02z0q0S1sbdIIV52oOp7knqSe5PJ71aooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArntS8FaNqMjzRxPY3Lks01mQhYk5LMuCjMfVlJ966GigDzW/8Ga5ZbntvI1KIchYyIZevACsdpwOSd6+wrAmk+zXAt7qOS1nZiqx3CGNnI67d2Nw91yPevaajnt4bqB4LiGOWFxh45FDKw9CD1oA8dorv7zwFok4Y2qT6e5AANnJtVQOwjYFB+C1iXngPVodzWN9Z3QLALHcK0BVfUuu/cfoq0Ac3RVu60bWrHzWuNHu/KjOBJABOH91VCXx9VFZst5bwTrBcSC3nYZEM48uT/vlsH9KAJ6KKKACiiigAooooAKKKKACiiigAoqKe6t7VN9xPFCv96Rwo/Wp7aK5vXjW0sby4EgykkVu5jb/ALaY2D8TQA2ite08JeIbsRs9nBZIWw4urgF1HqFj3K30LLW1Z/D1BtbUdVnnIJyltGIEcehyWfPuGFAHFTXENtGZJ5Y4kHBZ2Cj8zV6y0jWNTIFlpk2wkjzrkGCNSBkH5huIPYorCvSNN8OaPpDrJZWEMcwXb57DfKR6GRssR9TWpQBxFh8Pg2H1e/eQHrb2mYkwR0L/AHzg91KfSus0/TLHSrcwWFpDbxk7mEaAbm/vMe545J5NW6KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAprosiFHUMpGCCMg0UUAY8nhHw7JvI0ayid+WeCEROf+BLg/rVE+ANCRCsC3sLH+P7ZJIR+EhYfpRRQBRb4e2sIL/21qr47N5GP0iFeV+M9eu/DeoG2tEikUMRmZST+hFFFAzmf+Fhasf8Al3sv++H/APiqP+Fhat/z72X/AHw//wAVRRSAWP4g6s8qIbeywzAH5G/+Kr2Hw14fi8RaVHcz3l1bSN1+z7Mf+PK1FFAHQW3w90+FiZ9R1K6Uj7krxqB+MaKf1q5b+BvD1u5YWLy56rcXMsy/98uxH6UUUxGpYaNpel7v7P02ztN33vs8Cx5+uAKvUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH//2Q==', + wordStyle: { + fontFamily: 'Verdana', + fontSize: [8, 32], + }, + }); + + wordCloud.render(); + }); diff --git a/examples/word-cloud/basic/demo/image-mask.ts b/examples/word-cloud/basic/demo/image-mask.ts index eac9a2a5bf..e088f3863e 100644 --- a/examples/word-cloud/basic/demo/image-mask.ts +++ b/examples/word-cloud/basic/demo/image-mask.ts @@ -5,10 +5,8 @@ fetch('https://gw.alipayobjects.com/os/antvdemo/assets/data/antv-keywords.json') .then((data) => { const wordCloud = new WordCloud('container', { data, - // 宽高设置最好根据 imageMask 做调整 width: 600, height: 400, - autoFit: false, wordField: 'name', weightField: 'value', imageMask: 'https://gw.alipayobjects.com/mdn/rms_2274c3/afts/img/A*07tdTIOmvlYAAAAAAAAAAABkARQnAQ', diff --git a/examples/word-cloud/basic/demo/meta.json b/examples/word-cloud/basic/demo/meta.json index 686442606e..ef71494dcf 100644 --- a/examples/word-cloud/basic/demo/meta.json +++ b/examples/word-cloud/basic/demo/meta.json @@ -27,6 +27,14 @@ "en": "Word Cloud chart - image mask" }, "screenshot": "https://gw.alipayobjects.com/mdn/rms_f5c722/afts/img/A*id4CSZIMCtsAAAAAAAAAAABkARQnAQ" + }, + { + "filename": "image-mask-base64.ts", + "title": { + "zh": "词云图-图片遮罩-base64", + "en": "Word Cloud chart - image mask base64" + }, + "screenshot": "https://gw.alipayobjects.com/mdn/rms_f5c722/afts/img/A*id4CSZIMCtsAAAAAAAAAAABkARQnAQ" } ] } diff --git a/src/plots/word-cloud/index.ts b/src/plots/word-cloud/index.ts index 55f341145f..42fbc83546 100644 --- a/src/plots/word-cloud/index.ts +++ b/src/plots/word-cloud/index.ts @@ -19,7 +19,6 @@ export class WordCloud extends Plot { protected getDefaultOptions(): Partial { return deepMix({}, super.getDefaultOptions(), { timeInterval: 2000, - autoFit: true, tooltip: { showTitle: false, showMarkers: false, diff --git a/src/plots/word-cloud/utils.ts b/src/plots/word-cloud/utils.ts index 3eb18b4e23..f12830c023 100644 --- a/src/plots/word-cloud/utils.ts +++ b/src/plots/word-cloud/utils.ts @@ -43,7 +43,7 @@ export function transform(params: Params) { */ function getSize(params: Params & { chart: Chart }) { const { chart, options } = params; - const { autoFit } = options; + const { autoFit = true } = options; let { width, height } = chart; // 由于词云图每个词语的坐标都是先通过 DataSet 根据图表宽高计算出来的, From 67f15042e9f62813fb033cc79fe351f481ed70ca Mon Sep 17 00:00:00 2001 From: zhangzhonghe <958414905@qq.com> Date: Thu, 24 Sep 2020 11:42:15 +0800 Subject: [PATCH 4/5] =?UTF-8?q?docs:=20=E6=9B=B4=E6=94=B9base64=E5=9B=BE?= =?UTF-8?q?=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/word-cloud/basic/demo/image-mask-base64.ts | 2 +- package.json | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/examples/word-cloud/basic/demo/image-mask-base64.ts b/examples/word-cloud/basic/demo/image-mask-base64.ts index eaebe05331..2e96f2657e 100644 --- a/examples/word-cloud/basic/demo/image-mask-base64.ts +++ b/examples/word-cloud/basic/demo/image-mask-base64.ts @@ -10,7 +10,7 @@ fetch('https://gw.alipayobjects.com/os/antvdemo/assets/data/antv-keywords.json') wordField: 'name', weightField: 'value', imageMask: - 'data:image/jpeg;base64,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/G2AZOp4OF6fLkZrPjiWMuw3F3bc7uxZnPTLMeSeByafQAAAAADAHaiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAGhWjuI7mCWSC5j+5PEdrr3xnuMgZByDjkGus0fx1JBtt9cTcnAF9CvH/bRB07fMuRySQgFcrRQB7HDNFcQJNBIksUihkdGDKwPIII6in15Dpmp3+hTGXTZFEbNuktJP9VIc5J9UY5PzD1yQ2AK9F0LxLYa8jLCWhu0GZLWXAkUeo7MvI+YZHY4OQADZooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAqhq2sWeiWRur2TapbYiKMvI3ZVHc8E+wBJwATVTxD4ktdBgVSBPeyg+Raq2C/wDtE/woO7Y9gCSAfNrm4utQvDe6hOZ7kghTjCRKcZVF/hHA9zgZJwKALWs61feIJT9rzDZBg0dkpyOOjSH+Ns84+6DjGSoY0qKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKQgiSOWOR4p4m3RTRnDxt6g/TII6EEg5BIpaKAOz8O+M/OeLT9ZKx3LMEiuwNscxPQN/cc9PRjjGCQo7OvF3RJY2jdVZGBVlYZBB6g10Ph7xbNpDra6rM8+nHhLmQlnt/wDfPVk/2jyvfK8qAej0U1HWRFdGDIwyrKcgj1FOoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK53xP4nTRYxa2oSbU5V3JE33Y16eZJjtkHA6sQQMAMynifxMmixi1tQkupzLujjbJWNenmPjtnOBwWIwMAMy+dAMZJJZZXmnlbfLNIctI3qfyAAHAAAAAAFAAfMknluJ5XnuZjulmf7zn+gHYDgdqWiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKANTw94hm8OSCFw8uksfniUFmt/9qMd19UH1Xn5W9OgniuYI54JUlhkUOkiMGVlIyCCOoIrx2tPw/wCIJfDlwVcP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sp3H8MbH9KmqtqAzpt0PWF/5GgD2m0QR2UCDosaj8hU1MhOYIyO6j+VPoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA4Dx98utaf/ALdvL+jJ/wDFVzFdP8QOdZ0r2t5//Qo/8K5igAooooAKKKKACiiigAooooAKKKKAPNPiEM6/B/16r/6E9FL8Qv8AkPwf9eq/+hPRSKR3eiAjQNOBGCLWL/0EVfoZY457iCIYjguJYFHsjsn/ALLRTJCiiigAooooAKKKKACiiigApsiCSJ0PRlIp1FAHrGi3K3ug6ddKcrNbRyD6MoP9avVi+EAq+DdGiBB8mzihOD/EihSPzBraoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA888czK/iKCDPzw2gcj2d2H/tOucrZ8YhX8ZTyqQdtnBC2D0YNI2PykH51jUAFFFFABRRRQAUUUUAFFFFABRRRQB5t8QUkbX4CiMw+yryAT/E1Few+H/Ddh4hgu57mMtJb3HkZHpsR//Z6KQzMvLZrTV9TgdgW+3TyH2EkjSAfk4qKtHxJbtb+L9VLtnz2inQei+Uifzjas6mIKKKKACiiigAooooAKKKKACiiigDvfh9JF/wAIybZH3yW13OsvH3WdzKB/3zItdTXC/D2cpdatZCMKhMV0Hzy7sCjfkIo/++veu6oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoopGZUQszBVAySTgAUAeSavJFceJ9ZuYX3xy3W36NGiRMP++o2qrUNrK1zALqSLyZbpmuZY/7ryEuw/76Y1NQAUUUUAFFFFABRRRQAUUUUAFFFFAHcfD22aHSL+csCtzfNInsBHHGf1Q0Vc8DW7W/hCzDNu81pZ1P+zJK7r+jCigDm/HUCw+J7W43fPdWZQL6CJ8k/wDkYflXP12nxCtmay068jjBMVyY5HP8Ebo383WMVxdABRRRQAUUUUAFFFFABRRRQAUUUUAafhe5Fp4vsHIJFwktqTnAXcA4J/GI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FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABU2n6dc6zqSadaEoxAeeYDPkR5+9zxuOCFB6nJwQrYiijnuruKys4vOu5s+XHnAwOrMeyjufoBkkA+oeH9Dh0HTRbI/myuxknmK7TLIQATjsMAADnAAGT1oAu2FjbaZYw2VpEI4IV2ouSfxJPJJ6knkkkmrFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABTXRJI2jkUMjAhlYZBHoadRQB5b4h8PP4cuA8QZtJlYLE55+zsTxGx/uk8K3/AAE87d2XXsU8EVzbyQTxJLDKpSSN1DK6kYIIPUEV5h4g8Py+G5w6l5dKkYLFMxLNAx6RyHuCeFc9eFb5sFwDMooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApDvaSOGGJ5riZtkUKfekbrgfgCSTwACSQATQS7SRwwxPNcTNsihjGWkb0HbsSScAAEkgAmvRPDHhddFQ3d2yTanKu2SReViXr5ceecZAyeCxAJwAqqAP8L+G10O2aa4ZJdRnA86VfuqOyJn+EevUnk44A6CiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACmTQxXEEkE8aSxSKUdHUMrKRggg9QafRQB5j4h8MzeH993blptJHLFiWe1H+1/eQf3uq98jLDHr2auA8QeDHsg15ocReHOZLBf4R/ei/qnTH3cEbWAOYopsciypuQ5GSORggg4II7EEEEHoRTqACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACljiuLq6is7OEz3cudkYOBgdWY/wqMjJ9wBkkAzafp97rN4bTTkBZSBNO4Jjg7/ADerYOQg5ORnaDuHpWh+H7LQLZ47YO8smDNcSkGSQjpkgAYGTgAADJ45NAFTw34Xh0NDPM4uNRlXbJPjAVeuxB2XIHuSAT0AHQUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBzPiHwhb6q73tmy2upHBL4+SbAxiQDrxgBhyMDqBtPAzw3FldtZ30DW90oJ2NyHA/iRujLyOR0yAQDxXslUtT0mx1i0+zX9us0edy5JDI2CNysMFTgnkEHk0AeTUVr6x4V1PRiZYhJqNkP4448zR/wC8ij5vqo7/AHQATWLHLHNGskTq8bDKspyCPY0APooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoopbaK4vrv7JYW73VzxuROkYPQu3RRwevXBwCeKAGO6RRtJIyoiglmY4AHqTW3ofha91tknuhJZadnOTlZpx6KP4FP948kZwBkNXQaF4JgspI7zVWS8vEIZEA/cwMDnKg/eYHHzN6ZAXJrraAK9jYWumWcdpZQJDBGPlRB6nJJ9SSSSTySSTViiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK5vW/Bljqkkl1asbG/flpo1ykhx/y0TIDduRhuAN2OK6SigDyDVNPv8AQmP9qW/lQ5wLqMloDzgZbA2HkDDAZJwN1QV7MRkYPSuR1LwDYTZk0mT+zZP+eSJugPT/AJZ5G3gH7hUZOSDQBw9FWdR0vU9GBbUrJo4VGTcwnzIQMZJLYBUAdS4UemaqqyuoZWDKwyCDkEUALRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFNDh7hbaJXmuGG4QwoZHIzjO1cnGTyeg70AOpjyqskcQDvNLkRxRoXkkxydqjJbA5OBwOa6PTfBOqX+H1CUabAf+WabZJz+PKJ/4/kHsa7XStC03RI3WwtVjaTHmSklpJMZxuc5Jxk4BPGeMUAcbpPgi/vSsurObK3/AOfaJgZnHozjIQdfu5ODkMprudP02z0q0S1sbdIIV52oOp7knqSe5PJ71aooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArntS8FaNqMjzRxPY3Lks01mQhYk5LMuCjMfVlJ966GigDzW/8Ga5ZbntvI1KIchYyIZevACsdpwOSd6+wrAmk+zXAt7qOS1nZiqx3CGNnI67d2Nw91yPevaajnt4bqB4LiGOWFxh45FDKw9CD1oA8dorv7zwFok4Y2qT6e5AANnJtVQOwjYFB+C1iXngPVodzWN9Z3QLALHcK0BVfUuu/cfoq0Ac3RVu60bWrHzWuNHu/KjOBJABOH91VCXx9VFZst5bwTrBcSC3nYZEM48uT/vlsH9KAJ6KKKACiiigAooooAKKKKACiiigAoqKe6t7VN9xPFCv96Rwo/Wp7aK5vXjW0sby4EgykkVu5jb/ALaY2D8TQA2ite08JeIbsRs9nBZIWw4urgF1HqFj3K30LLW1Z/D1BtbUdVnnIJyltGIEcehyWfPuGFAHFTXENtGZJ5Y4kHBZ2Cj8zV6y0jWNTIFlpk2wkjzrkGCNSBkH5huIPYorCvSNN8OaPpDrJZWEMcwXb57DfKR6GRssR9TWpQBxFh8Pg2H1e/eQHrb2mYkwR0L/AHzg91KfSus0/TLHSrcwWFpDbxk7mEaAbm/vMe545J5NW6KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAprosiFHUMpGCCMg0UUAY8nhHw7JvI0ayid+WeCEROf+BLg/rVE+ANCRCsC3sLH+P7ZJIR+EhYfpRRQBRb4e2sIL/21qr47N5GP0iFeV+M9eu/DeoG2tEikUMRmZST+hFFFAzmf+Fhasf8Al3sv++H/APiqP+Fhat/z72X/AHw//wAVRRSAWP4g6s8qIbeywzAH5G/+Kr2Hw14fi8RaVHcz3l1bSN1+z7Mf+PK1FFAHQW3w90+FiZ9R1K6Uj7krxqB+MaKf1q5b+BvD1u5YWLy56rcXMsy/98uxH6UUUxGpYaNpel7v7P02ztN33vs8Cx5+uAKvUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH//2Q==', + 'data:image/png;base64,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', wordStyle: { fontFamily: 'Verdana', fontSize: [8, 32], diff --git a/package.json b/package.json index b10f527133..7d41fbaa62 100644 --- a/package.json +++ b/package.json @@ -56,12 +56,12 @@ "@antv/data-set": "^0.11.5", "@antv/event-emitter": "^0.1.2", "@antv/g2": "^4.1.0-beta.7", - "dayjs": "^1.8.34", + "dayjs": "^1.8.36", "size-sensor": "^1.0.1", "tslib": "^1.13.0" }, "devDependencies": { - "@antv/gatsby-theme-antv": "^1.0.0-beta.0", + "@antv/gatsby-theme-antv": "^1.0.0-beta.4", "@babel/core": "^7.10.4", "@babel/preset-env": "^7.10.4", "@commitlint/cli": "^8.2.0", @@ -76,14 +76,14 @@ "eslint-config-prettier": "^6.0.0", "eslint-plugin-import": "^2.22.0", "eslint-plugin-prettier": "^3.1.0", - "gatsby": "^2.20.22", + "gatsby": "^2.24.63", "generate-changelog": "^1.8.0", "gh-pages": "^3.1.0", "husky": "^4.2.3", "jest": "^26.0.1", "jest-electron": "^0.1.7", "jest-extended": "^0.11.2", - "limit-size": "^0.1.1", + "limit-size": "^0.1.3", "lint-md-cli": "^0.1.2", "lint-staged": "^10.0.7", "npm-run-all": "^4.1.5", @@ -93,8 +93,8 @@ "ts-jest": "^25.4.0", "ts-loader": "^7.0.0", "typescript": "^3.5.3", - "webpack": "^4.39.2", - "webpack-bundle-analyzer": "^3.4.1", + "webpack": "^4.44.2", + "webpack-bundle-analyzer": "^3.9.0", "webpack-cli": "^3.3.7", "webpack-dev-server": "^3.9.0" }, From 9a0f11b9463b61a4941e3bf6dbd2e7c8b67d9fdd Mon Sep 17 00:00:00 2001 From: zhangzhonghe <958414905@qq.com> Date: Thu, 24 Sep 2020 20:38:52 +0800 Subject: [PATCH 5/5] =?UTF-8?q?docs:=20=E4=BF=AE=E6=94=B9=E6=96=87?= =?UTF-8?q?=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/word-cloud/basic/API.en.md | 13 +------------ examples/word-cloud/basic/API.zh.md | 2 +- 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/examples/word-cloud/basic/API.en.md b/examples/word-cloud/basic/API.en.md index e6d0d5e5b6..94342e0924 100644 --- a/examples/word-cloud/basic/API.en.md +++ b/examples/word-cloud/basic/API.en.md @@ -50,7 +50,7 @@ 功能描述: 设置一张图片,然后图表就可以根据该图片的形状进行渲染,可以是图片元素实例或者 url 地址和 base64 -注意: 图片的词语只渲染在图片的深色部位,浅色的部位(如白色)不渲染词语 +注意: 词语只渲染在图片的深色部位,浅色的部位(如白色)不渲染词语。当使用图片的 url 地址时,图片的大小不宜过大,不然图片加载时间过长 默认配置: 无 @@ -78,17 +78,6 @@ | -------- | ----------------------------------- | ---------------------------------------------------- | | text | _string_ | 文本内容 | | value | _number_ | 该文本所占权重 | -| font | _string_ | 字体 | -| style | _"normal" \| "italic" \| "oblique"_ | 字体样式 | -| weight | _number \| string_ | 文本粗细 | -| rotate | _number_ | 旋转角度 | -| size | _number_ | 字体大小 | -| padding | _number_ | 一个单词所占的盒子的内边距,值越大单词之间的间隔越大 | -| hasText | _boolean_ | 是否包含文本 | -| width | _number_ | 单词所占盒子的宽度 | -| height | _number_ | 单词所占盒子的高度 | -| x | _number_ | x 轴坐标 | -| y | _number_ | y 轴坐标 | `markdown:docs/common/color.en.md` diff --git a/examples/word-cloud/basic/API.zh.md b/examples/word-cloud/basic/API.zh.md index e4786cf18a..c3cf0d0d20 100644 --- a/examples/word-cloud/basic/API.zh.md +++ b/examples/word-cloud/basic/API.zh.md @@ -50,7 +50,7 @@ 功能描述: 设置一张图片,然后图表就可以根据该图片的形状进行渲染,可以是图片元素实例或者 url 地址和 base64 -注意: 图片的词语只渲染在图片的深色部位,浅色的部位(如白色)不渲染词语 +注意: 词语只渲染在图片的深色部位,浅色的部位(如白色)不渲染词语。当使用图片的 url 地址时,图片的大小不宜过大,不然图片加载时间过长 默认配置: 无