Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
x649585723
incubator-echarts
提交
cdbcd466
I
incubator-echarts
项目概览
x649585723
/
incubator-echarts
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
I
incubator-echarts
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
cdbcd466
编写于
1月 04, 2018
作者:
S
sushuang
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'next' of
https://github.com/100pah/echarts
into next
# Conflicts: # src/chart/helper/createListFromArray.js
上级
3da4ccba
87cdabd5
变更
10
显示空白变更内容
内联
并排
Showing
10 changed file
with
192 addition
and
137 deletion
+192
-137
src/chart/effectScatter/EffectScatterView.js
src/chart/effectScatter/EffectScatterView.js
+10
-23
src/chart/heatmap/HeatmapView.js
src/chart/heatmap/HeatmapView.js
+2
-2
src/chart/helper/LargeSymbolDraw.js
src/chart/helper/LargeSymbolDraw.js
+17
-3
src/chart/scatter.js
src/chart/scatter.js
+21
-5
src/chart/scatter/ScatterView.js
src/chart/scatter/ScatterView.js
+10
-44
src/coord/View.js
src/coord/View.js
+0
-6
src/data/List.js
src/data/List.js
+96
-35
src/echarts.js
src/echarts.js
+8
-4
src/visual/dataColor.js
src/visual/dataColor.js
+1
-1
test/scatter-random-stream.html
test/scatter-random-stream.html
+27
-14
未找到文件。
src/chart/effectScatter/EffectScatterView.js
浏览文件 @
cdbcd466
...
...
@@ -3,6 +3,8 @@ import SymbolDraw from '../helper/SymbolDraw';
import
EffectSymbol
from
'
../helper/EffectSymbol
'
;
import
*
as
matrix
from
'
zrender/src/core/matrix
'
;
import
pointsLayout
from
'
../../layout/points
'
;
export
default
echarts
.
extendChartView
({
type
:
'
effectScatter
'
,
...
...
@@ -12,8 +14,6 @@ export default echarts.extendChartView({
},
render
:
function
(
seriesModel
,
ecModel
,
api
)
{
this
.
_removeRoamTransformInPoints
(
seriesModel
);
var
data
=
seriesModel
.
getData
();
var
effectSymbolDraw
=
this
.
_symbolDraw
;
effectSymbolDraw
.
updateData
(
data
);
...
...
@@ -21,18 +21,16 @@ export default echarts.extendChartView({
},
updateTransform
:
function
(
seriesModel
,
ecModel
,
api
)
{
var
coordSys
=
seriesModel
.
coordinateSystem
;
// Must mark group dirty and make sure the incremental layer will be cleared
// PENDING
var
data
=
seriesModel
.
getData
();
this
.
group
.
dirty
();
if
(
coordSys
.
getRoamTransform
)
{
this
.
_updateGroupTransform
(
seriesModel
);
}
else
{
return
{
update
:
true
};
var
res
=
pointsLayout
().
reset
(
seriesModel
);
if
(
res
.
progress
)
{
res
.
progress
({
start
:
0
,
end
:
data
.
count
()
},
seriesModel
);
}
this
.
_symbolDraw
.
updateLayout
(
data
);
},
_updateGroupTransform
:
function
(
seriesModel
)
{
...
...
@@ -43,17 +41,6 @@ export default echarts.extendChartView({
}
},
_removeRoamTransformInPoints
:
function
(
seriesModel
)
{
var
coordSys
=
seriesModel
.
coordinateSystem
;
if
(
coordSys
&&
coordSys
.
removeRoamTransformInPoint
)
{
var
data
=
seriesModel
.
getData
();
data
.
each
(
function
(
i
)
{
var
pt
=
data
.
getItemLayout
(
i
);
coordSys
.
removeRoamTransformInPoint
(
pt
);
});
}
},
remove
:
function
(
ecModel
,
api
)
{
this
.
_symbolDraw
&&
this
.
_symbolDraw
.
remove
(
api
);
},
...
...
src/chart/heatmap/HeatmapView.js
浏览文件 @
cdbcd466
...
...
@@ -153,7 +153,7 @@ export default echarts.extendChartView({
if
(
coordSysType
===
'
cartesian2d
'
)
{
// Ignore empty data
if
(
isNaN
(
data
.
get
(
dataDims
[
2
],
idx
)))
{
return
;
continue
;
}
var
point
=
coordSys
.
dataToPoint
([
...
...
@@ -177,7 +177,7 @@ export default echarts.extendChartView({
else
{
// Ignore empty data
if
(
isNaN
(
data
.
get
(
dataDims
[
1
],
idx
)))
{
return
;
continue
;
}
rect
=
new
graphic
.
Rect
({
...
...
src/chart/helper/LargeSymbolDraw.js
浏览文件 @
cdbcd466
...
...
@@ -127,6 +127,19 @@ largeSymbolProto.updateData = function (data) {
this
.
_incremental
=
null
;
};
largeSymbolProto
.
updateLayout
=
function
(
data
)
{
if
(
this
.
_incremental
)
{
return
;
}
var
points
=
data
.
getLayout
(
'
symbolPoints
'
);
this
.
group
.
eachChild
(
function
(
child
)
{
var
len
=
(
child
.
endIndex
-
child
.
startIndex
)
*
2
;
var
byteOffset
=
child
.
startIndex
*
4
*
2
;
child
.
setShape
(
'
points
'
,
new
Float32Array
(
points
.
buffer
,
byteOffset
,
len
));
});
};
largeSymbolProto
.
incrementalPrepareUpdate
=
function
(
data
)
{
this
.
group
.
removeAll
();
...
...
@@ -155,10 +168,11 @@ largeSymbolProto.incrementalUpdate = function (taskParams, data) {
else
{
symbolEl
=
new
LargeSymbolPath
({
rectHover
:
true
,
cursor
:
'
default
'
cursor
:
'
default
'
,
startIndex
:
taskParams
.
start
,
endIndex
:
taskParams
.
end
});
symbolEl
.
incremental
=
true
;
symbolEl
.
__startIndex
=
taskParams
.
start
;
this
.
group
.
add
(
symbolEl
);
}
...
...
@@ -210,7 +224,7 @@ largeSymbolProto._setCommon = function (symbolEl, data, isIncremental) {
var
dataIndex
=
symbolEl
.
findDataIndex
(
e
.
offsetX
,
e
.
offsetY
);
if
(
dataIndex
>=
0
)
{
// Provide dataIndex for tooltip
symbolEl
.
dataIndex
=
dataIndex
+
symbolEl
.
__
startIndex
;
symbolEl
.
dataIndex
=
dataIndex
+
symbolEl
.
startIndex
;
}
});
}
...
...
src/chart/scatter.js
浏览文件 @
cdbcd466
import
*
as
echarts
from
'
../echarts
'
;
import
*
as
zrUtil
from
'
zrender/src/core/util
'
;
import
'
./scatter/ScatterSeries
'
;
import
'
./scatter/ScatterView
'
;
// import './scatter/StreamScatterSeries';
// import './scatter/StreamScatterView';
import
visualSymbol
from
'
../visual/symbol
'
;
import
layoutPoints
from
'
../layout/points
'
;
...
...
@@ -15,5 +13,23 @@ import '../component/gridSimple';
echarts
.
registerVisual
(
visualSymbol
(
'
scatter
'
,
'
circle
'
));
echarts
.
registerLayout
(
layoutPoints
(
'
scatter
'
));
// echarts.registerVisual(zrUtil.curry(visualSymbol, 'streamScatter', 'circle', null));
// echarts.registerLayout(zrUtil.curry(layoutPoints, 'streamScatter'));
// echarts.registerProcessor(function (ecModel, api) {
// ecModel.eachSeriesByType('scatter', function (seriesModel) {
// var data = seriesModel.getData();
// var coordSys = seriesModel.coordinateSystem;
// if (coordSys.type !== 'geo') {
// return;
// }
// var startPt = coordSys.pointToData([0, 0]);
// var endPt = coordSys.pointToData([api.getWidth(), api.getHeight()]);
// var dims = zrUtil.map(coordSys.dimensions, function (dim) {
// return seriesModel.coordDimToDataDim(dim)[0];
// });
// var range = {};
// range[dims[0]] = [Math.min(startPt[0], endPt[0]), Math.max(startPt[0], endPt[0])];
// range[dims[1]] = [Math.min(startPt[1], endPt[1]), Math.max(startPt[1], endPt[1])];
// data.selectRange(range);
// });
// });
\ No newline at end of file
src/chart/scatter/ScatterView.js
浏览文件 @
cdbcd466
...
...
@@ -3,14 +3,14 @@ import SymbolDraw from '../helper/SymbolDraw';
import
LargeSymbolDraw
from
'
../helper/LargeSymbolDraw
'
;
import
*
as
matrix
from
'
zrender/src/core/matrix
'
;
import
pointsLayout
from
'
../../layout/points
'
;
echarts
.
extendChartView
({
type
:
'
scatter
'
,
render
:
function
(
seriesModel
,
ecModel
,
api
)
{
var
data
=
seriesModel
.
getData
();
this
.
_removeRoamTransformInPoints
(
seriesModel
,
0
,
data
.
count
());
this
.
_updateGroupTransform
(
seriesModel
);
var
symbolDraw
=
this
.
_updateSymbolDraw
(
data
,
seriesModel
);
symbolDraw
.
updateData
(
data
);
...
...
@@ -19,8 +19,6 @@ echarts.extendChartView({
},
incrementalPrepareRender
:
function
(
seriesModel
,
ecModel
,
api
)
{
this
.
_updateGroupTransform
(
seriesModel
);
var
data
=
seriesModel
.
getData
();
var
symbolDraw
=
this
.
_updateSymbolDraw
(
data
,
seriesModel
);
...
...
@@ -30,61 +28,29 @@ echarts.extendChartView({
},
incrementalRender
:
function
(
taskParams
,
seriesModel
,
ecModel
)
{
this
.
_removeRoamTransformInPoints
(
seriesModel
,
taskParams
.
start
,
taskParams
.
end
);
this
.
_symbolDraw
.
incrementalUpdate
(
taskParams
,
seriesModel
.
getData
());
this
.
_finished
=
taskParams
.
end
===
seriesModel
.
getData
().
count
();
},
updateTransform
:
function
(
seriesModel
,
ecModel
,
api
)
{
var
coordSys
=
seriesModel
.
coordinateSystem
;
var
update
=
true
;
var
data
=
seriesModel
.
getData
();
// Must mark group dirty and make sure the incremental layer will be cleared
// PENDING
this
.
group
.
dirty
();
if
(
coordSys
.
getRoamTransform
)
{
update
=
false
;
this
.
_updateGroupTransform
(
seriesModel
);
}
if
(
update
||
!
this
.
_finished
||
!
this
.
_symbolDraw
.
isPersistent
())
{
if
(
!
this
.
_finished
||
data
.
count
()
>
2
e5
||
!
this
.
_symbolDraw
.
isPersistent
())
{
return
{
update
:
true
};
}
},
_updateGroupTransform
:
function
(
seriesModel
)
{
var
coordSys
=
seriesModel
.
coordinateSystem
;
if
(
coordSys
&&
coordSys
.
getRoamTransform
)
{
this
.
group
.
transform
=
matrix
.
clone
(
coordSys
.
getRoamTransform
());
this
.
group
.
decomposeTransform
();
}
},
_removeRoamTransformInPoints
:
function
(
seriesModel
,
start
,
end
)
{
var
coordSys
=
seriesModel
.
coordinateSystem
;
if
(
coordSys
&&
coordSys
.
removeRoamTransformInPoint
)
{
var
data
=
seriesModel
.
getData
();
var
pt
=
[];
if
(
seriesModel
.
pipelineContext
.
large
)
{
var
points
=
data
.
getLayout
(
'
symbolPoints
'
);
if
(
points
)
{
for
(
var
i
=
0
;
i
<
points
.
length
;
i
+=
2
)
{
pt
[
0
]
=
points
[
i
];
pt
[
1
]
=
points
[
i
+
1
];
coordSys
.
removeRoamTransformInPoint
(
pt
);
points
[
i
]
=
pt
[
0
];
points
[
i
+
1
]
=
pt
[
1
];
}
}
}
else
{
for
(
var
i
=
start
;
i
<
end
;
i
++
)
{
var
pt
=
data
.
getItemLayout
(
i
);
coordSys
.
removeRoamTransformInPoint
(
pt
);
}
var
res
=
pointsLayout
().
reset
(
seriesModel
);
if
(
res
.
progress
)
{
res
.
progress
({
start
:
0
,
end
:
data
.
count
()
},
seriesModel
);
}
this
.
_symbolDraw
.
updateLayout
(
data
);
}
},
...
...
src/coord/View.js
浏览文件 @
cdbcd466
...
...
@@ -163,12 +163,6 @@ View.prototype = {
return
this
.
_roamTransformable
.
getLocalTransform
();
},
removeRoamTransformInPoint
:
function
(
pt
)
{
if
(
this
.
_roamTransformable
.
invTransform
)
{
vector
.
applyTransform
(
pt
,
pt
,
this
.
_roamTransformable
.
invTransform
);
}
},
/**
* Remove roam
*/
...
...
src/data/List.js
浏览文件 @
cdbcd466
...
...
@@ -41,7 +41,7 @@ function cloneChunk(originalChunk) {
var
TRANSFERABLE_PROPERTIES
=
[
'
stackedOn
'
,
'
hasItemOption
'
,
'
_nameList
'
,
'
_idList
'
,
'
_rawData
'
,
'
_rawExtent
'
,
'
_chunkSize
'
,
'
_dimValueGetter
'
,
'
_count
'
'
_rawData
'
,
'
_rawExtent
'
,
'
_chunkSize
'
,
'
_
chunkCount
'
,
'
_
dimValueGetter
'
,
'
_count
'
];
function
transferProperties
(
a
,
b
)
{
...
...
@@ -82,10 +82,13 @@ function DefaultDataProvider(dataArray, dimSize) {
zrUtil
.
extend
(
this
,
methods
);
}
var
providerProto
=
DefaultDataProvider
.
prototype
;
// If data is pure without style configuration
DefaultDataProvider
.
prototype
.
pure
=
false
;
providerProto
.
pure
=
false
;
// If data is persistent and will not be released after use.
DefaultDataProvider
.
prototype
.
persistent
=
true
;
providerProto
.
persistent
=
true
;
// If data is isTypedArray.
providerProto
.
isTypedArray
=
false
;
var
normalProviderMethods
=
{
...
...
@@ -109,6 +112,8 @@ var typedArrayProviderMethods = {
pure
:
true
,
isTypedArray
:
true
,
count
:
function
()
{
return
this
.
_array
?
(
this
.
_array
.
length
/
this
.
_dimSize
)
:
0
;
},
...
...
@@ -562,7 +567,7 @@ listProto._initDataFromProvider = function (start, end) {
nameList
[
idx
]
=
name
;
// Try using the id in option
var
id
=
dataItem
&&
dataItem
.
id
;
var
id
=
dataItem
==
null
?
null
:
dataItem
.
id
;
if
(
id
==
null
&&
name
!=
null
)
{
// Use name as id and add counter to avoid same name
...
...
@@ -583,6 +588,9 @@ listProto._initDataFromProvider = function (start, end) {
}
this
.
_count
=
end
;
// Reset data extent
this
.
_extent
=
{};
};
/**
...
...
@@ -614,7 +622,7 @@ listProto.getIndices = function () {
* @return {number}
*/
listProto
.
get
=
function
(
dim
,
idx
,
stack
)
{
if
(
idx
<
0
||
idx
>=
this
.
_count
)
{
if
(
!
(
idx
>=
0
&&
idx
<
this
.
_count
)
)
{
return
NaN
;
}
var
storage
=
this
.
_storage
;
...
...
@@ -716,23 +724,20 @@ listProto.getDataExtent = function (dim, stack) {
var
dimData
=
this
.
_storage
[
dim
];
var
initialExtent
=
[
Infinity
,
-
Infinity
];
stack
=
stack
||
false
;
stack
=
(
stack
||
false
)
&&
isStacked
(
this
,
dim
)
;
if
(
!
dimData
)
{
return
initialExtent
;
}
// Make more strict checkings to ensure hitting cache.
var
stacked
=
isStacked
(
this
,
dim
);
var
currEnd
=
this
.
count
();
// Consider that the data is incremental, the extent should be
// cached by not only dim, but also the end index.
var
cacheName
=
[
dim
,
!!
(
stack
&&
stacked
),
currEnd
].
join
(
'
_
'
);
var
cacheName
=
[
dim
,
!!
stack
].
join
(
'
_
'
);
// Consider the most cases when using data zoom, `getDataExtent`
// happened before filtering. We cache raw extent, which is not
// necessary to be cleared and recalculated when restore data.
var
useRaw
=
!
this
.
_indices
&&
!
stack
ed
;
var
useRaw
=
!
this
.
_indices
&&
!
stack
;
var
dimExtent
;
if
(
useRaw
)
{
...
...
@@ -1006,6 +1011,10 @@ function validateDimensions(list, dims) {
listProto
.
each
=
function
(
dims
,
cb
,
stack
,
context
)
{
'
use strict
'
;
if
(
!
this
.
_count
)
{
return
;
}
if
(
typeof
dims
===
'
function
'
)
{
context
=
stack
;
stack
=
cb
;
...
...
@@ -1058,6 +1067,10 @@ listProto.each = function (dims, cb, stack, context) {
listProto
.
filterSelf
=
function
(
dimensions
,
cb
,
stack
,
context
)
{
'
use strict
'
;
if
(
!
this
.
_count
)
{
return
;
}
if
(
typeof
dimensions
===
'
function
'
)
{
context
=
stack
;
stack
=
cb
;
...
...
@@ -1124,10 +1137,15 @@ listProto.filterSelf = function (dimensions, cb, stack, context) {
/**
* Select data in range. (For optimization of filter)
* (Manually inline code, support 5 million data filtering in data zoom.)
*/
listProto
.
selectRange
=
function
(
range
,
stack
)
{
'
use strict
'
;
if
(
!
this
.
_count
)
{
return
;
}
stack
=
stack
||
false
;
var
dimensions
=
[];
...
...
@@ -1153,13 +1171,55 @@ listProto.selectRange = function (range, stack) {
var
offset
=
0
;
var
dim0
=
dimensions
[
0
];
if
(
dimSize
===
1
)
{
var
min
=
range
[
dim0
][
0
];
var
max
=
range
[
dim0
][
1
];
var
quickFinished
=
false
;
if
(
!
this
.
_indices
&&
!
stack
)
{
// Extreme optimization for common case. About 2x faster in chrome.
var
idx
=
0
;
if
(
dimSize
===
1
)
{
var
dimStorage
=
this
.
_storage
[
dimensions
[
0
]];
for
(
var
k
=
0
;
k
<
this
.
_chunkCount
;
k
++
)
{
var
chunkStorage
=
dimStorage
[
k
];
var
len
=
Math
.
min
(
this
.
_count
-
k
*
this
.
_chunkSize
,
this
.
_chunkSize
);
for
(
var
i
=
0
;
i
<
len
;
i
++
)
{
var
val
=
chunkStorage
[
i
];
if
(
val
>=
min
&&
val
<=
max
)
{
newIndices
[
offset
++
]
=
idx
;
}
idx
++
;
}
}
quickFinished
=
true
;
}
else
if
(
dimSize
===
2
)
{
var
dimStorage
=
this
.
_storage
[
dim0
];
var
dimStorage2
=
this
.
_storage
[
dimensions
[
1
]];
var
min2
=
range
[
dimensions
[
1
]][
0
];
var
max2
=
range
[
dimensions
[
1
]][
1
];
for
(
var
k
=
0
;
k
<
this
.
_chunkCount
;
k
++
)
{
var
chunkStorage
=
dimStorage
[
k
];
var
chunkStorage2
=
dimStorage2
[
k
];
var
len
=
Math
.
min
(
this
.
_count
-
k
*
this
.
_chunkSize
,
this
.
_chunkSize
);
for
(
var
i
=
0
;
i
<
len
;
i
++
)
{
var
val
=
chunkStorage
[
i
];
var
val2
=
chunkStorage2
[
i
];
if
(
val
>=
min
&&
val
<=
max
&&
val2
>=
min2
&&
val2
<=
max2
)
{
newIndices
[
offset
++
]
=
idx
;
}
idx
++
;
}
}
quickFinished
=
true
;
}
}
if
(
!
quickFinished
)
{
if
(
dimSize
===
1
)
{
stack
=
stack
||
isStacked
(
this
,
dim0
);
for
(
var
i
=
0
;
i
<
originalCount
;
i
++
)
{
var
rawIndex
=
this
.
getRawIndex
(
i
);
var
val
=
stack
?
this
.
get
(
dim0
,
i
,
true
)
:
this
.
_getFast
(
dim0
,
rawIndex
);
if
(
val
>=
min
&&
val
<=
max
)
{
newIndices
[
offset
++
]
=
rawIndex
;
}
...
...
@@ -1181,6 +1241,7 @@ listProto.selectRange = function (range, stack) {
}
}
}
}
// Set indices after filtered.
if
(
offset
<
originalCount
)
{
...
...
@@ -1213,10 +1274,6 @@ listProto.mapArray = function (dimensions, cb, stack, context) {
dimensions
=
[];
}
if
(
__DEV__
)
{
validateDimensions
(
this
,
dimensions
);
}
var
result
=
[];
this
.
each
(
dimensions
,
function
()
{
result
.
push
(
cb
&&
cb
.
apply
(
this
,
arguments
));
...
...
@@ -1643,6 +1700,10 @@ listProto.TRANSFERABLE_METHODS = ['cloneShallow', 'downSample', 'map'];
// listProto.CHANGABLE_METHODS = ['filterSelf'];
listProto
.
defaultDimValueGetter
=
function
(
dataItem
,
dimName
,
dataIndex
,
dimIndex
)
{
if
(
this
.
_rawData
.
isTypedArray
)
{
return
dataIndex
[
dimIndex
];
}
var
value
=
modelUtil
.
getDataItemValue
(
dataItem
);
// If any dataItem is like { value: 10 }
if
(
!
this
.
_rawData
.
pure
&&
modelUtil
.
isDataItemOption
(
dataItem
))
{
...
...
src/echarts.js
浏览文件 @
cdbcd466
...
...
@@ -1021,7 +1021,14 @@ echartsProto.resize = function (opts) {
var
ecModel
=
this
.
_model
;
var
optionChanged
=
ecModel
&&
ecModel
.
resetOption
(
'
media
'
);
// Resize loading effect
this
.
_loadingFX
&&
this
.
_loadingFX
.
resize
();
if
(
!
ecModel
)
{
return
;
}
var
optionChanged
=
ecModel
.
resetOption
(
'
media
'
);
optionChanged
&&
ecModel
.
settingTask
.
dirty
();
...
...
@@ -1042,9 +1049,6 @@ function refresh(ecIns, needPrepare, silent) {
needPrepare
&&
prepare
(
ecIns
);
updateMethods
.
update
.
call
(
ecIns
);
// Resize loading effect
ecIns
.
_loadingFX
&&
ecIns
.
_loadingFX
.
resize
();
ecIns
[
IN_MAIN_PROCESS
]
=
false
;
flushPendingActions
.
call
(
ecIns
,
silent
);
...
...
src/visual/dataColor.js
浏览文件 @
cdbcd466
...
...
@@ -11,7 +11,7 @@ export default function (seriesType) {
ecModel
.
eachSeriesByType
(
seriesType
,
function
(
seriesModel
)
{
seriesModel
.
__paletteScope
=
paletteScope
;
se
riesModel
.
push
(
seriesModel
);
se
iresModels
.
push
(
seriesModel
);
});
return
seiresModels
;
},
...
...
test/scatter-random-stream.html
浏览文件 @
cdbcd466
...
...
@@ -33,20 +33,27 @@
var
chunkCount
=
0
;
function
genData1
(
len
,
offset
)
{
// console.profile('gen');
var
lngRange
=
[
-
10.781327
,
131.48
];
var
latRange
=
[
18.252847
,
52.33
];
var
data
=
[];
while
(
len
--
)
{
var
x
=
+
(
Math
.
random
()
*
10
).
toFixed
(
3
);
data
.
push
([
x
,
+
(
Math
.
sin
(
x
)
-
x
*
(
len
%
2
?
0.1
:
-
0.1
)
*
Math
.
random
()).
toFixed
(
3
)
+
(
offset
||
0
)
/
10
,
Math
.
random
()
*
100
]);
var
arr
=
new
Float32Array
(
len
*
2
);
var
off
=
0
;
// var data = [];
for
(
var
i
=
0
;
i
<
len
;
i
++
)
{
var
x
=
+
Math
.
random
()
*
10
;
var
y
=
+
Math
.
sin
(
x
)
-
x
*
(
len
%
2
?
0.1
:
-
0.1
)
*
Math
.
random
()
+
(
offset
||
0
)
/
10
;
arr
[
off
++
]
=
x
;
arr
[
off
++
]
=
y
;
// data.push([
// x,
// y
// ]);
}
return
data
;
// console.profileEnd('gen');
return
arr
;
// return data;
}
function
genData2
(
count
)
{
...
...
@@ -118,14 +125,20 @@
name
:
'
pm2.5
'
,
type
:
'
scatter
'
,
large
:
true
,
data
:
genData1
(
1
e6
),
data
:
genData1
(
5
e6
),
dimensions
:
[
'
x
'
,
'
y
'
],
encode
:
{
x
:
0
,
y
:
1
},
xAxisIndex
:
0
,
yAxisIndex
:
0
,
symbolSize
:
2
,
symbolSize
:
1
,
// symbol: 'rect',
itemStyle
:
{
normal
:
{
color
:
'
#128de3
'
color
:
'
#128de3
'
,
opacity
:
0.2
}
},
progressive
:
3000
...
...
@@ -161,7 +174,7 @@
window
.
onresize
=
chart
.
resize
;
next
();
//
next();
function
next
()
{
if
(
chunkCount
++
<
chunkMax
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录