viserjs / viser Goto Github PK
View Code? Open in Web Editor NEWviser is a toolkit fit for data vis engineer. https://viserjs.gitee.io/
Home Page: https://viserjs.github.io
License: MIT License
viser is a toolkit fit for data vis engineer. https://viserjs.gitee.io/
Home Page: https://viserjs.github.io
License: MIT License
viser有这个功能吗 有这个需求
viser-vue getDataView rerender bug
我在G2中用了两次tranform,不知viser中如何写。还是我tranform使用的方法不对?
const data = [
{ month: 'Jan', Tokyo: 7.0, London: 3.9 , shanghai:3.2, dalian:13.2},
{ month: 'Feb', Tokyo: 6.9, London: 4.2 , shanghai:3.3, dalian:23.2},
{ month: 'Mar', Tokyo: 9.5, London: 5.7 , shanghai:8.2, dalian:31.2},
{ month: 'Apr', Tokyo: 14.5, London: 8.5 , shanghai:10.1, dalian:13.2},
{ month: 'May', Tokyo: 18.4, London: 11.9, shanghai:5.2, dalian:13.2}
];
const ds = new DataSet();
const dv = ds.createView().source(data);
dv.transform({
type: 'fold',
fields: [ 'Tokyo', 'London'], // 展开字段集
key: '国外城市', // key字段
value: '国外气温', // value字段
});
dv.transform({
type: 'fold',
fields: [ 'shanghai', 'dalian'], // 展开字段集
key: '国内城市', // key字段
value: '国内气温', // value字段
});
感谢,希望能出文档
相比同类型的库打包出来好大啊,有什么优化措施吗?
CommonDataSet.prototype.getDataView = function (data, dataView) {
if (dataView === void 0) { dataView = 'rows'; }
if (__WEBPACK_IMPORTED_MODULE_0_lodash__["isArray"](dataView) && dataView.length >= 2) {
var type = dataView[0];
if (__WEBPACK_IMPORTED_MODULE_0_lodash__["isFunction"](dataView[1])) {
if (type === 'nodes') {
return dataView[1](data.getAllNodes());
}
else if (type === 'edges') {
return dataView[1](data.getAllLinks());
}
}
}
return data[dataView]; // when data=[] , it will occure bug
};
pc浏览器可以支持鼠标hover上去就出现tooltip,但是移动端貌似不支持mousemove事件
As its API is the same as G2, and what I should do is to read G2 doc, so why should I use it ?
I am using vue and in my opinion, it would just make my project more complex and hope to get your idea.
Do you mean that the tags like <v-chart>
would be convenient for us?
I use viser-vue, but set v-axis title attribute not work
viser-vue怎么做动态的图表呢?
scale参数没写到template里
https://viserjs.github.io/demo.html#/point/bubble
在element ui tabs组件中,如果放在非第一个标签页里,点击切换到其余标签页时,图表没有渲染出来,但当我打开浏览器开发者工具时才会进行渲染。
但我如果一直打开开发者工具,刷新进行切换也不会渲染,只有关闭开发者工具才会渲染。
不知是触发渲染的机制出现了问题?
是否有事件可以进行手动初始化?目前没有文档十分不方便
浏览器:Chrome 63.0.3239.108
vue: 2.5.9
viser-vue: 1.3.0
When navigate to demo : https://viserjs.github.io/demo.html#/gauge/tick-gauge
The tick-gauge can not show , and the console error:
demo.js:201119 Uncaught Error: Template parse errors:
Can't bind to 'position' since it isn't a known property of 'v-interval'.
1. If 'v-interval' is an Angular component and it has 'position' input, then verify that it is part of this module.
2. If 'v-interval' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
3. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component. ("
></v-coord>
<v-interval
[ERROR ->][position]="'type*value'"
[color]="'#CBCBCB'"
[size]="6"
"): ng:///AppModule/AppComponent.html@12:10
Can't bind to 'color' since it isn't a known property of 'v-interval'.
1. If 'v-interval' is an Angular component and it has 'color' input, then verify that it is part of this module.
2. If 'v-interval' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
3. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component. ("
<v-interval
[position]="'type*value'"
[ERROR ->][color]="'#CBCBCB'"
[size]="6"
></v-interval>
"): ng:///AppModule/AppComponent.html@13:10
Can't bind to 'size' since it isn't a known property of 'v-interval'.
1. If 'v-interval' is an Angular component and it has 'size' input, then verify that it is part of this module.
2. If 'v-interval' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
3. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component. ("
[position]="'type*value'"
[color]="'#CBCBCB'"
[ERROR ->][size]="6"
></v-interval>
</v-view>
"): ng:///AppModule/AppComponent.html@14:10
'v-interval' is not a known element:
1. If 'v-interval' is an Angular component, then verify that it is part of this module.
2. If 'v-interval' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message. ("
[radius]="0.8"
></v-coord>
[ERROR ->]<v-interval
[position]="'type*value'"
[color]="'#CBCBCB'"
"): ng:///AppModule/AppComponent.html@11:8
Can't bind to 'position' since it isn't a known property of 'v-interval'.
1. If 'v-interval' is an Angular component and it has 'position' input, then verify that it is part of this module.
2. If 'v-interval' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
3. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component. ("
></v-coord>
<v-interval
[ERROR ->][position]="'type*value'"
[color]="'#CBCBCB'"
[size]="6"
"): ng:///AppModule/AppComponent.html@34:10
Can't bind to 'color' since it isn't a known property of 'v-interval'.
1. If 'v-interval' is an Angular component and it has 'color' input, then verify that it is part of this module.
2. If 'v-interval' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
3. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component. ("
<v-interval
[position]="'type*value'"
[ERROR ->][color]="'#CBCBCB'"
[size]="6"
></v-interval>
"): ng:///AppModule/AppComponent.html@35:10
Can't bind to 'size' since it isn't a known property of 'v-interval'.
1. If 'v-interval' is an Angular component and it has 'size' input, then verify that it is part of this module.
2. If 'v-interval' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
3. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component. ("
[position]="'type*value'"
[color]="'#CBCBCB'"
[ERROR ->][size]="6"
></v-interval>
</v-view>
"): ng:///AppModule/AppComponent.html@36:10
'v-interval' is not a known element:
1. If 'v-interval' is an Angular component, then verify that it is part of this module.
2. If 'v-interval' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message. ("
[radius]="0.55"
></v-coord>
[ERROR ->]<v-interval
[position]="'type*value'"
[color]="'#CBCBCB'"
"): ng:///AppModule/AppComponent.html@33:8
Can't bind to 'position' since it isn't a known property of 'v-interval'.
1. If 'v-interval' is an Angular component and it has 'position' input, then verify that it is part of this module.
2. If 'v-interval' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
3. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component. ("
></v-coord>
<v-interval
[ERROR ->][position]="'type*value'"
[color]="frontIntervalColor"
[opacity]="1"
"): ng:///AppModule/AppComponent.html@48:10
Can't bind to 'color' since it isn't a known property of 'v-interval'.
1. If 'v-interval' is an Angular component and it has 'color' input, then verify that it is part of this module.
2. If 'v-interval' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
3. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component. ("
<v-interval
[position]="'type*value'"
[ERROR ->][color]="frontIntervalColor"
[opacity]="1"
[size]="6"
"): ng:///AppModule/AppComponent.html@49:10
Can't bind to 'opacity' since it isn't a known property of 'v-interval'.
1. If 'v-interval' is an Angular component and it has 'opacity' input, then verify that it is part of this module.
2. If 'v-interval' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
3. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component. ("
[position]="'type*value'"
[color]="frontIntervalColor"
[ERROR ->][opacity]="1"
[size]="6"
></v-interval>
"): ng:///AppModule/AppComponent.html@50:10
Can't bind to 'size' since it isn't a known property of 'v-interval'.
1. If 'v-interval' is an Angular component and it has 'size' input, then verify that it is part of this module.
2. If 'v-interval' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
3. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component. ("
[color]="frontIntervalColor"
[opacity]="1"
[ERROR ->][size]="6"
></v-interval>
<v-guide
"): ng:///AppModule/AppComponent.html@51:10
'v-interval' is not a known element:
1. If 'v-interval' is an Angular component, then verify that it is part of this module.
2. If 'v-interval' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message. ("
[radius]="0.8"
></v-coord>
[ERROR ->]<v-interval
[position]="'type*value'"
[color]="frontIntervalColor"
"): ng:///AppModule/AppComponent.html@47:8
at syntaxError (demo.js:201119)
at TemplateParser.parse (demo.js:225294)
at JitCompiler._parseTemplate (demo.js:235105)
at JitCompiler._compileTemplate (demo.js:235080)
at demo.js:234981
at Set.forEach (<anonymous>)
at JitCompiler._compileComponents (demo.js:234981)
at demo.js:234851
at Object.then (demo.js:201108)
at JitCompiler._compileModuleAndComponents (demo.js:234850)
syntaxError @ demo.js:201119
TemplateParser.parse @ demo.js:225294
JitCompiler._parseTemplate @ demo.js:235105
JitCompiler._compileTemplate @ demo.js:235080
(anonymous) @ demo.js:234981
JitCompiler._compileComponents @ demo.js:234981
(anonymous) @ demo.js:234851
then @ demo.js:201108
JitCompiler._compileModuleAndComponents @ demo.js:234850
JitCompiler.compileModuleAsync @ demo.js:234744
CompilerImpl.compileModuleAsync @ demo.js:26948
PlatformRef.bootstrapModule @ demo.js:5839
Object.setPrototypeOf.__proto__ @ demo.js:172524
__webpack_require__ @ demo.js:20
webpackContext @ demo.js:154376
Demo.runCode @ demo.js:55822
Demo.renderCase @ demo.js:55844
(anonymous) @ demo.js:55899
dispatch @ demo.js:32826
elemData.handle @ demo.js:32634
Mostly, it happens in the scene when data is asynchronous fetched from server. We usally set data to []
in first round render, such as componentDidMount in React and mounted in Vue, etc.
Hope Viser can support empty check before chart render.
Thanks.
没有文档,盲用啊,vue组件跟着你的demo用了还是很方便的,但是没有文档啊。
在vue中实现带图片遮罩的词云时,自定义了shape,传入v-point中,shape没起作用
<v-point :position="'x*y'" :color="'text'" :shape="'cloud'" />
import { registerShape } from 'viser-vue';
function getTextAttrs(cfg) {
return Object.assign({}, {
fillOpacity: cfg.opacity,
fontSize: cfg.origin._origin.size,
rotate: cfg.origin._origin.rotate,
text: cfg.origin._origin.text,
textAlign: 'center',
fontFamily: cfg.origin._origin.font,
fill: cfg.color,
textBaseline: 'Alphabetic'
}, cfg.style);
}
registerShape('point', 'cloud', {
draw(cfg, container) {
const attrs = getTextAttrs(cfg);
return container.addShape('text', {
attrs: Object.assign(attrs, {
x: cfg.x,
y: cfg.y
})
});
}
});
Environment: Angular 5.0
Application: simple example like https://viserjs.github.io/demo.html#/bar/stacked-bar
Ran into this error:
$ ng build --prod
Date: 2018-01-10T01:47:26.232Z
Hash: 13c7cb86d7d449e7a853
Time: 3607ms
chunk {0} styles.9c0ad738f18adc3d19ed.bundle.css (styles) 79 bytes [initial] [rendered]
chunk {1} polyfills.3bc34265385d52184eab.bundle.js (polyfills) 86 bytes [initial] [rendered]
chunk {2} main.e402deade8b026b7d50e.bundle.js (main) 84 bytes [initial] [rendered]
chunk {3} inline.22b7623ed7c5ac6f9a35.bundle.js (inline) 1.45 kB [entry] [rendered]
ERROR in : Unexpected value 'Axis in /xxxxx/viser-app/node_modules/viser-ng/src/components/index.ts' declared by the module 'ViserModule in /xxxxx/viser-app/node_modules/viser-ng/src/module.ts'. Please add a @Pipe/@Directive/@component annotation.
node_modules/viser/src/utils/CustomizeUtils.ts(1,12): error TS2304: Cannot find name 'require'.
node_modules/viser/src/core/CommonDataSet.ts(4,17): error TS2304: Cannot find name 'require'.
node_modules/viser/src/core/CommonChart.ts(19,12): error TS2304: Cannot find name 'require'.
node_modules/viser/src/index.ts(16,12): error TS2304: Cannot find name 'require'.
<Chart [forceFit]="forceFit" [height]="height" >
<View viewId="1" [data]="data" [dataPre]="dataPre" [scale]="scale">
<Tooltip [showTitle]="tooltipOpts.showTitle" [crosshairs]="tooltipOpts.crosshairs" [itemTpl]="tooltipOpts.itemTpl"></Tooltip>
<Axis></Axis>
<Box position="x*range" [style]="boxStyle" [tooltip]="boxTooltip"></Box>
</View>
<View viewId="4" [data]="data" [scale]="scale">
<Point [position]="'x*range'" [size]="3" [active]="false"></Point>
</View>
</Chart>
const boxStyle = {
stroke: '#545454',
fill: '#1890FF',
fillOpacity: 0.3
};
<v-chart :force-fit="true" :height="height" :data="averages" :scale="scale"> <v-tooltip /> <v-axis /> <v-line :position="'time*temperature'" :size="2" /> <v-point :position="'time*temperature'" :size="4" :style="pointStyle"/> <v-view :view-id="2" :data="data"> <v-area :position="'time*temperature'" /> </v-view> </v-chart>
在我的项目中应该怎么使用啊?demo介绍一点都不详细
g2上是有k线图的demo的,希望能出个k线图的demo。
跑ng build --prod的时候报这个错,咋整?
https://viserjs.github.io/demo.html
demo.js:18623 Assertion failed: [IMPORT]: prefixExponent from ./formatPrefixAuto is undefined.
Uncaught (in promise) Error: Please specify the container for the chart!
react
<Chart forceFit height={400} data={averages} scale={scale}> <Tooltip /> <Axis /> <Line position="time*temperature" size="2" /> <Point position="time*temperature" size="4" style={pointStyle}/> <View viewId="2" data={data}> <Area position="time*temperature" /> </View> </Chart>
angular
<Chart [forceFit]="forceFit" [height]="height"> <View viewId="1" [data]="averages" [scale]="scale"> <Tooltip></Tooltip> <Axis></Axis> <Line position="time*temperature" size="2"></Line> <Point position="time*temperature" size="4" [style]="pointStyle"></Point> </View> <View viewId="2" [data]="data" [scale]="scale"> <Area position="time*temperature" /> </View> </Chart>
详情可见: https://viserjs.github.io/demo.html?type=area&example=4
[at-loader] ./node_modules/viser-react/src/components/Facet.tsx:5:22 │is-odd whatwg-fetch
TS2415: Class 'Facet' incorrectly extends base class 'Component<IFacet, any>'. │is-path-cwd whet.extend
Types of property 'render' are incompatible. │is-path-in-cwd which
Type '() => ReactNode' is not assignable to type '() => false | Element'. │is-path-inside which-module
Type 'ReactNode' is not assignable to type 'false | Element'. │is-plain-obj wide-align
Type 'string' is not assignable to type 'false | Element'.
React 15版本的环境下, 使用 viser, 会有上述报错.
在React 15 版本还不支持直接 return this.props.children
详细可见: https://stackoverflow.com/questions/39133797/react-only-return-props-children
有3处:
https://github.com/viserjs/viser/blob/master/packages/viser-react/src/components/Facet.tsx#L27
https://github.com/viserjs/viser/blob/master/packages/viser-react/src/components/FacetView.tsx#L51
https://github.com/viserjs/viser/blob/master/packages/viser-react/src/components/View.tsx#L47
图片试了多次没有上传上来,结果就是数据柱状图最左侧的柱子压住了y轴,特别是只有一个柱子的时候。
要怎么才能实现正常的柱状图显示,
想不明白,为什么横轴为时间时,柱状图显示不正常,了解到你们文档上自动给设置为连续的类型了。
我感觉应该在柱状图时,时间不应该自动给转换成连续型。
设置类型‘timeCat’
const scale = {
date: {
type: 'timeCat',
alias: '时间'
}
};
While more than 1 legend (ex. 2 legend called foo, bar) display in chart, <Legend dataKey="foo" show={false} />
is required to leave bar
as only legend in chart.
Please support this, thanks.
error :node_modules/viser/src/components/setSeriesConfig.ts (237,10): Property 'forEach' does not exist on type 'ISeriesConfig'.
Property 'forEach' does not exist on type 'ISeries'.
TypeScript2.7.0
I tried to run viser demo following your guide.
$ npm run postinstall
$ cd ./demo && npm install
$ npm run start
when exec the last command, here is the error msg
ERROR in ../packages/viser/src/shapes/loadShapes.ts
(2,27): error TS2307: Cannot find module './ErrorBar'.
ERROR in ../packages/viser/src/shapes/loadShapes.ts
Module not found: Error: Can't resolve './ErrorBar' in '/root/Downloads/viser/packages/viser/src/shapes'
@ ../packages/viser/src/shapes/loadShapes.ts 4:15-36
@ ../packages/viser/src/core/CommonChart.ts
@ ../packages/viser/src/index.ts
@ ./chart/bar-1/json.ts
@ ./chart ^\.\/.*$
@ ./index.ts
@ multi ./index.ts
webpack: Failed to compile.
then I checked the file /path/to/packages/viser/src/shapes/loadShapes.ts
and the file /path/to/packages/viser/src/shapes/Errorbar.ts
I cannot find any error, in grammar.
any help?
my develop env is node 8.9.1, npm 5.5.1
如题,unpkg.com上版本访问时提示如下错误:
Cannot find module "/umd/viser-vue.min.js" in package [email protected]
When chart get data asynchronously, it seems render twice.
See demo:
https://viserjs.github.io/demo.html?type=point&example=scatter
https://viserjs.github.io/demo.html?type=point&example=scatter-series
But adjust="jitter"
will fixed this problem, it's confused.
See demo:
https://viserjs.github.io/demo.html?type=point&example=jitter
Error: Uncaught (in promise): Error: Cannot enable prod mode after platform setup.
Error: Cannot enable prod mode after platform setup.
at enableProdMode (core.js:5247)
at eval (module.js:96)
at Object.../../../../viser-ng/es/module.js (blog.module.chunk.js:483)
at webpack_require (inline.bundle.js:55)
at eval (index.js:2)
at Object.../../../../viser-ng/es/index.js (blog.module.chunk.js:475)
at webpack_require (inline.bundle.js:55)
at eval (blog.module.ts:12)
at Object.../../../../../src/app/views/blog/blog.module.ts (blog.module.chunk.js:89)
at webpack_require (inline.bundle.js:55)
at enableProdMode (core.js:5247)
at eval (module.js:96)
at Object.../../../../viser-ng/es/module.js (blog.module.chunk.js:483)
at webpack_require (inline.bundle.js:55)
at eval (index.js:2)
at Object.../../../../viser-ng/es/index.js (blog.module.chunk.js:475)
at webpack_require (inline.bundle.js:55)
at eval (blog.module.ts:12)
at Object.../../../../../src/app/views/blog/blog.module.ts (blog.module.chunk.js:89)
at webpack_require (inline.bundle.js:55)
at resolvePromise (zone.js:809)
at resolvePromise (zone.js:775)
at eval (zone.js:858)
at ZoneDelegate.invokeTask (zone.js:421)
at Object.onInvokeTask (core.js:4724)
at ZoneDelegate.invokeTask (zone.js:420)
at Zone.runTask (zone.js:188)
at drainMicroTaskQueue (zone.js:595)
at
<v-chart #chart [forceFit]="forceFit" [height]="height" [data]="data" [dataPre]="dataPre" [scale]="scale">
<v-tooltip></v-tooltip>
<v-axis dataKey="item" line="null" tickLine="null" [grid]="axis1GridOpts"></v-axis>
<v-axis dataKey="score" line="null" tickLine="null" [grid]="axis2GridOpts"></v-axis>
<v-legend></v-legend>
<v-coord type="polar" radius="0.8"></v-coord>
<v-line position="item*score" color="user" size="2"></v-line>
<v-point position="item*score" color="user" size="4"></v-point>
<v-area position="item*score" color="user"></v-area>
</v-chart>
change data can't render v-chart
node:9.0.0
vue:2.5.9
viser-vue:1.0.4
https://viserjs.github.io/demo.html#/pie/multi-level-pie
I use the same example by vue-viser as same as Official Website Demo, but child case hoverd without tooltip response, meanwhile console hasn't been throwing error
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.