Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
x649585723
incubator-echarts
提交
c73ff8cc
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,发现更多精彩内容 >>
提交
c73ff8cc
编写于
2月 18, 2016
作者:
P
pah100
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
make markLine support candlestick and boxplot
上级
c396ada0
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
114 addition
and
57 deletion
+114
-57
src/component/marker/MarkLineView.js
src/component/marker/MarkLineView.js
+21
-30
src/component/marker/markerHelper.js
src/component/marker/markerHelper.js
+38
-26
test/boxplot.html
test/boxplot.html
+28
-0
test/candlestick.html
test/candlestick.html
+27
-1
未找到文件。
src/component/marker/MarkLineView.js
浏览文件 @
c73ff8cc
...
...
@@ -13,22 +13,21 @@ define(function (require) {
var
LineDraw
=
require
(
'
../../chart/helper/LineDraw
'
);
var
markLineTransform
=
function
(
seriesModel
,
coordSys
,
baseAxis
,
valueAxis
,
precision
,
item
)
{
var
markLineTransform
=
function
(
seriesModel
,
coordSys
,
mlModel
,
item
)
{
var
data
=
seriesModel
.
getData
();
// Special type markLine like 'min', 'max', 'average'
var
mlType
=
item
.
type
;
if
(
!
zrUtil
.
isArray
(
item
)
&&
mlType
===
'
min
'
||
mlType
===
'
max
'
||
mlType
===
'
average
'
&&
(
mlType
===
'
min
'
||
mlType
===
'
max
'
||
mlType
===
'
average
'
)
)
{
if
(
item
.
valueIndex
!=
null
)
{
baseAxis
=
coordSys
.
getAxis
(
coordSys
.
dimensions
[
1
-
item
.
valueIndex
]);
valueAxis
=
coordSys
.
getAxis
(
coordSys
.
dimensions
[
item
.
valueIndex
]);
}
var
baseAxisKey
=
baseAxis
.
dim
+
'
Axis
'
;
var
valueAxisKey
=
valueAxis
.
dim
+
'
Axis
'
;
var
baseScaleExtent
=
baseAxis
.
scale
.
getExtent
();
var
axisInfo
=
markerHelper
.
getAxisInfo
(
item
,
data
,
coordSys
,
seriesModel
);
var
baseAxisKey
=
axisInfo
.
baseAxis
.
dim
+
'
Axis
'
;
var
valueAxisKey
=
axisInfo
.
valueAxis
.
dim
+
'
Axis
'
;
var
baseScaleExtent
=
axisInfo
.
baseAxis
.
scale
.
getExtent
();
var
mlFrom
=
zrUtil
.
extend
({},
item
);
var
mlFrom
=
zrUtil
.
clone
(
item
);
var
mlTo
=
{};
mlFrom
.
type
=
null
;
...
...
@@ -37,21 +36,25 @@ define(function (require) {
mlFrom
[
baseAxisKey
]
=
baseScaleExtent
[
0
];
mlTo
[
baseAxisKey
]
=
baseScaleExtent
[
1
];
var
value
=
mlType
===
'
average
'
?
data
.
getSum
(
valueAxis
.
dim
,
true
)
/
data
.
count
()
:
data
.
getDataExtent
(
valueAxis
.
dim
)[
mlType
===
'
max
'
?
1
:
0
];
var
value
=
markerHelper
.
numCalculate
(
data
,
axisInfo
.
valueDataDim
,
mlType
);
// Round if axis is cateogry
value
=
valueAxis
.
coordToData
(
valueAxis
.
dataToCoord
(
value
));
value
=
axisInfo
.
valueAxis
.
coordToData
(
axisInfo
.
valueAxis
.
dataToCoord
(
value
));
var
precision
=
mlModel
.
get
(
'
precision
'
);
if
(
precision
>=
0
)
{
value
=
+
value
.
toFixed
(
precision
);
}
mlFrom
[
valueAxisKey
]
=
mlTo
[
valueAxisKey
]
=
value
;
item
=
[
mlFrom
,
mlTo
,
{
// Extra option for tooltip and label
type
:
mlType
,
// Force to use the value of calculated value.
value
:
+
value
.
toFixed
(
precision
)
value
:
value
}];
}
item
=
[
markerHelper
.
dataTransform
(
seriesModel
,
item
[
0
]),
markerHelper
.
dataTransform
(
seriesModel
,
item
[
1
]),
...
...
@@ -228,27 +231,15 @@ define(function (require) {
* @param {module:echarts/model/Model} mpModel
*/
function
createList
(
coordSys
,
seriesModel
,
mlModel
)
{
// var dataDimensions = seriesData.dimensions;
// var dimensionInfosMap = zrUtil.map(
// dataDimensions, seriesData.getDimensionInfo, seriesData
// );
// Mark line get the dimensions from coordinate system
// Because user specify the data by xAxis, yAxis
var
dimensions
=
coordSys
.
dimensions
;
var
fromData
=
new
List
(
dimensions
,
mlModel
);
var
toData
=
new
List
(
dimensions
,
mlModel
);
var
fromData
=
new
List
(
seriesModel
.
getCoordDimensionInfo
(),
mlModel
);
var
toData
=
new
List
(
seriesModel
.
getCoordDimensionInfo
(),
mlModel
);
// No dimensions
var
lineData
=
new
List
([],
mlModel
);
if
(
coordSys
)
{
var
baseAxis
=
coordSys
.
getBaseAxis
();
var
valueAxis
=
coordSys
.
getOtherAxis
(
baseAxis
);
var
precision
=
mlModel
.
get
(
'
precision
'
);
var
optData
=
zrUtil
.
filter
(
zrUtil
.
map
(
mlModel
.
get
(
'
data
'
),
zrUtil
.
curry
(
markLineTransform
,
seriesModel
,
coordSys
,
baseAxis
,
valueAxis
,
precision
markLineTransform
,
seriesModel
,
coordSys
,
mlModel
)),
zrUtil
.
curry
(
markLineFilter
,
coordSys
)
);
...
...
src/component/marker/markerHelper.js
浏览文件 @
c73ff8cc
...
...
@@ -23,9 +23,7 @@ define(function (require) {
mlType
,
data
,
baseDataDim
,
valueDataDim
,
baseCoordIndex
,
valueCoordIndex
)
{
var
coordArr
=
[];
var
value
=
mlType
===
'
average
'
?
data
.
getSum
(
valueDataDim
,
true
)
/
data
.
count
()
:
data
.
getDataExtent
(
valueDataDim
,
true
)[
mlType
===
'
max
'
?
1
:
0
];
var
value
=
numCalculate
(
data
,
valueDataDim
,
mlType
);
var
dataIndex
=
data
.
indexOfNearest
(
valueDataDim
,
value
,
true
);
coordArr
[
baseCoordIndex
]
=
data
.
get
(
baseDataDim
,
dataIndex
,
true
);
...
...
@@ -85,36 +83,23 @@ define(function (require) {
&&
!
zrUtil
.
isArray
(
item
.
coord
)
&&
coordSys
)
{
var
baseAxis
;
var
baseDataDim
;
var
valueDataDim
;
var
valueAxis
;
if
(
item
.
valueIndex
!=
null
||
item
.
valueDim
!=
null
)
{
valueDataDim
=
item
.
valueIndex
!=
null
?
data
.
getDimension
(
item
.
valueIndex
)
:
item
.
valueDim
;
valueAxis
=
coordSys
.
getAxis
(
seriesModel
.
getCoordDimensionInfo
(
valueDataDim
).
name
);
baseAxis
=
coordSys
.
getOtherAxis
(
valueAxis
);
baseDataDim
=
seriesModel
.
getDimensionsOnAxis
(
baseAxis
.
dim
)[
0
];
}
else
{
baseAxis
=
seriesModel
.
getBaseAxis
();
valueAxis
=
coordSys
.
getOtherAxis
(
baseAxis
);
baseDataDim
=
seriesModel
.
getDimensionsOnAxis
(
baseAxis
.
dim
)[
0
];
valueDataDim
=
seriesModel
.
getDimensionsOnAxis
(
valueAxis
.
dim
)[
0
];
}
var
axisInfo
=
getAxisInfo
(
item
,
data
,
coordSys
,
seriesModel
);
// Clone the option
// Transform the properties xAxis, yAxis, radiusAxis, angleAxis, geoCoord to value
item
=
zrUtil
.
clone
(
item
);
if
(
item
.
type
&&
markerTypeCalculator
[
item
.
type
]
&&
baseAxis
&&
valueAxis
)
{
if
(
item
.
type
&&
markerTypeCalculator
[
item
.
type
]
&&
axisInfo
.
baseAxis
&&
axisInfo
.
valueAxis
)
{
var
dims
=
coordSys
.
dimensions
;
var
baseCoordIndex
=
indexOf
(
dims
,
baseAxis
.
dim
);
var
valueCoordIndex
=
indexOf
(
dims
,
valueAxis
.
dim
);
var
baseCoordIndex
=
indexOf
(
dims
,
axisInfo
.
baseAxis
.
dim
);
var
valueCoordIndex
=
indexOf
(
dims
,
axisInfo
.
valueAxis
.
dim
);
item
.
coord
=
markerTypeCalculator
[
item
.
type
](
data
,
baseDataDim
,
valueDataDim
,
baseCoordIndex
,
valueCoordIndex
data
,
axisInfo
.
baseDataDim
,
axisInfo
.
valueDataDim
,
baseCoordIndex
,
valueCoordIndex
);
// Force to use the value of calculated value.
item
.
value
=
item
.
coord
[
valueCoordIndex
];
...
...
@@ -130,6 +115,25 @@ define(function (require) {
return
item
;
};
var
getAxisInfo
=
function
(
item
,
data
,
coordSys
,
seriesModel
)
{
var
ret
=
{};
if
(
item
.
valueIndex
!=
null
||
item
.
valueDim
!=
null
)
{
ret
.
valueDataDim
=
item
.
valueIndex
!=
null
?
data
.
getDimension
(
item
.
valueIndex
)
:
item
.
valueDim
;
ret
.
valueAxis
=
coordSys
.
getAxis
(
seriesModel
.
getCoordDimensionInfo
(
ret
.
valueDataDim
).
name
);
ret
.
baseAxis
=
coordSys
.
getOtherAxis
(
ret
.
valueAxis
);
ret
.
baseDataDim
=
seriesModel
.
getDimensionsOnAxis
(
ret
.
baseAxis
.
dim
)[
0
];
}
else
{
ret
.
baseAxis
=
seriesModel
.
getBaseAxis
();
ret
.
valueAxis
=
coordSys
.
getOtherAxis
(
ret
.
baseAxis
);
ret
.
baseDataDim
=
seriesModel
.
getDimensionsOnAxis
(
ret
.
baseAxis
.
dim
)[
0
];
ret
.
valueDataDim
=
seriesModel
.
getDimensionsOnAxis
(
ret
.
valueAxis
.
dim
)[
0
];
}
return
ret
;
};
/**
* Filter data which is out of coordinateSystem range
...
...
@@ -154,9 +158,17 @@ define(function (require) {
}
};
var
numCalculate
=
function
(
data
,
valueDataDim
,
mlType
)
{
return
mlType
===
'
average
'
?
data
.
getSum
(
valueDataDim
,
true
)
/
data
.
count
()
:
data
.
getDataExtent
(
valueDataDim
,
true
)[
mlType
===
'
max
'
?
1
:
0
];
};
return
{
dataTransform
:
dataTransform
,
dataFilter
:
dataFilter
,
dimValueGetter
:
dimValueGetter
dimValueGetter
:
dimValueGetter
,
getAxisInfo
:
getAxisInfo
,
numCalculate
:
numCalculate
};
});
\ No newline at end of file
test/boxplot.html
浏览文件 @
c73ff8cc
...
...
@@ -128,6 +128,7 @@
].
join
(
'
<br/>
'
)
}
},
markPoint
:
{
data
:
[
{
...
...
@@ -169,7 +170,34 @@
valueDim
:
'
Q1
'
}
]
},
markLine
:
{
data
:
[
[
{
name
:
'
两个坐标之间的标线
'
,
coord
:
[
1
,
240
]},
{
coord
:
[
2
,
260
]}
],
[
{
name
:
'
两个屏幕坐标之间的标线
'
,
x
:
50
,
y
:
60
},
{
x
:
70
,
y
:
90
}
],
[
{
name
:
'
max - min
'
,
type
:
'
max
'
},
{
type
:
'
min
'
}
],
{
name
:
'
min line
'
,
type
:
'
min
'
},
{
name
:
'
max line on dim:Q3
'
,
type
:
'
max
'
,
valueDim
:
'
Q3
'
}
]
}
},
{
name
:
'
outlier
'
,
...
...
test/candlestick.html
浏览文件 @
c73ff8cc
...
...
@@ -34,7 +34,8 @@
'
echarts/component/grid
'
,
'
echarts/component/tooltip
'
,
'
echarts/component/dataZoom
'
,
'
echarts/component/markPoint
'
'
echarts/component/markPoint
'
,
'
echarts/component/markLine
'
],
function
(
echarts
,
rawData
)
{
chart
=
echarts
.
init
(
document
.
getElementById
(
'
main
'
),
null
,
{
...
...
@@ -174,6 +175,31 @@
return
param
.
name
+
'
<br>
'
+
(
param
.
data
.
coord
||
''
);
}
}
},
markLine
:
{
data
:
[
[
{
name
:
'
两个坐标之间的标线
'
,
coord
:
[
'
2013/4/25
'
,
2130
]},
{
coord
:
[
'
2013/5/27
'
,
2220
]}
],
[
{
name
:
'
两个屏幕坐标之间的标线
'
,
x
:
100
,
y
:
100
},
{
x
:
250
,
y
:
130
}
],
[
{
name
:
'
max - min
'
,
type
:
'
max
'
},
{
type
:
'
min
'
}
],
{
name
:
'
min line
'
,
type
:
'
min
'
},
{
name
:
'
max line on dim:open
'
,
type
:
'
max
'
,
valueDim
:
'
open
'
}
]
}
}
]
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录