使用bar和pie展示持仓
配置项如下
var bartop = 70;
var stockidscenter = 50;
var idscenter = 15;
var capbottom = 5;//50px
var bartitletop = bartop-5;
var bartop_text = bartop+'%';
var bartitletop_text = bartitletop+'%';
var capitalData= [
{ name: "电解锌", data: [86] },
{ name: "硅锰合金", data: [3] },
{ name: "磷酸氢钙", data: [11] },
];
option = {
backgroundColor:'#fff',
title: [{
text: '重仓股Top10',
top:bartitletop_text,
left:'45%'
},
{
text: "资产配置",
left: "45%",
top: "5px",
}],
grid:[{
top:bartop_text,
},
{
top:capbottom+'%',
height:40
}],
legend:{
show:false,
top:capbottom+'%',
left:'55%',
data:{
name:'股票'
}
},
dataset:[
{
source: [
['股票','债券','现金'],
[30,40,20],
],
},
{
source: [
['stockname', 'stockamount', 'stockpercent', 'top10idsA', 'top10idsus','top10idshk','top10idsApercent','top10idsuspercent','top10idshkpercent'],
['贵州茅台', 36.6144, 0.047243,'主要消费', '主要消费', '主要消费',0.0472,0.0472,0.0472,],
['五粮液' , 23.9682, 0.030926,'工业' , '工业' , '工业' ,0.0309,0.0309,0.0309,],
['中国平安', 22.9909, 0.029665,'医药卫生', '医药卫生', '医药卫生',0.0296,0.0296,0.0296,],
['立讯精密', 21.4294, 0.027650,'信息技术', '信息技术', '信息技术',0.0276,0.0276,0.0276,],
['宁德时代', 15.1585, 0.019559,'原材料' , '原材料' , '原材料' ,0.0195,0.0195,0.0195,],
['隆基股份', 15.1417, 0.019537,'金融地产', '金融地产', '金融地产',0.0195,0.0195,0.0195,],
['招商银行', 14.7713, 0.019059,'金融地产', '金融地产', '金融地产',0.0190,0.0190,0.0190,],
['恒瑞医药', 13.9479, 0.017997,'信息技术', '信息技术', '信息技术',0.0179,0.0179,0.0179,],
['中国中免', 12.7890, 0.016501,'医药卫生', '医药卫生', '医药卫生',0.0165,0.0165,0.0165,],
['迈瑞医疗', 11.7198, 0.015122,'可选消费', '可选消费', '可选消费',0.0151,0.0151,0.0151,],
]
}],
xAxis: [{
type:'category',
},
{
gridIndex:1,
axisLine: {
show: false,
},
axisTick: {
show: false,
},
splitLine: {
show: false,
},
axisLabel: {
show: false,
},
}],
yAxis: [{
name:'持仓价值'
},
{
gridIndex:1,
data: ["资产占比"],
axisLabel: {
show: false,
},
axisLine: {
show: false,
},
axisTick: {
show: false,
},
splitLine: {
show: false,
},
}],
tooltip:{
show:true
},
series: [{
type: 'bar',
name: 'stocktop10',
datasetIndex:1,
encode: {
x:'stockname',
y:'stockamount',
},
itemStyle:{
barBorderRadius:[5,5,0,0]
},
tooltip:{
show:true,
trigger:'item',
formatter:function(params, ticket, callback){
// console.log(params.encode);
var text = params.value[params.encode.x[0]]+'\n:'+params.value[params.encode.y[0]]+','+params.value[1]
return text
}
}
},
{
type:'pie',
name:'A股重仓股行业分布',
radius:['10%','15%'],
center:['15%',stockidscenter+'%'],
label:{
show:true,
formatter:'{@top10idsA}\n{d}%'
// position:'center'
},
// data:[12, 34, 56, 10, 23]
datasetIndex:1,
encode:{
value:'top10idsApercent'
}
},
{
type:'pie',
name:'港股重仓股行业分布',
radius:['10%','15%'],
center:['45%',stockidscenter+'%'],
label:{
show:true,
formatter:'{@top10idshk}\n{@top10idshkpercent}%'
// position:'center'
},
// data:[12, 34, 56, 10, 23]
datasetIndex:1,
encode:{
value:'top10idshkpercent'
}
},
],
// color: [
// "#FCAD2C",
// "#5292FD",
// "#3DBB33 ",
// "#EF6B6E",
// "#7F6AAD",
// "#585247",
// ],
};
capitalData.forEach((item, index) => {
option.series.push({
xAxisIndex:1,
yAxisIndex:1,
type: "bar",
name: item.name,
stack: "1",
label: {
normal: {
show: true,
position: [5, 5],
formatter: `{value|${item.data}}\n\n{name|${item.name}}`,
// formatter: `{value|${item.data}}`,
align: "left",
textStyle: {
color: "#fff",
rich: {
name: {
fontSize: "12",
fontWeight: 500,
color: "gray",
},
value: {
fontSize: "18",
fontWeight: 500,
color: "#fff",
},
},
},
},
},
barWidth: 30,
data: item.data,
itemStyle: {
normal: {
barBorderRadius: [0],
},
},
});
if (index === 0) {
option.series[index+3].itemStyle.normal.barBorderRadius = [
5,
0,
0,
5,
];
} else if (index === capitalData.length - 1) {
option.series[index+3].itemStyle.normal.barBorderRadius = [
0,
5,
5,
0,
];
} else {
return;
}
});