В версии карт: 5.3.3
Можно ли сделать метку (см. номера 630230, 131744 и т.д.) за пределами панели, как здесь на изображении
Я могу сделать с этим codesandbox https://codesandbox.io/s/echart-demo-histogram-manage-forked-ujjwvs?file=/src/App.tsx как на изображении ниже, где метка идет за баром,
Мне нравится держать метку за пределами диаграммы, как на первом изображении, кто-нибудь мог сделать это раньше?
Заранее благодарю за любую помощь.
const options = {
title: {
text: "World Populationss",
show: false
},
tooltip: {
trigger: "axis",
show: false,
axisPointer: {
type: "none"
}
},
legend: { show: false },
grid: null,
xAxis: {
type: "value",
show: false,
axisLine: {
show: false
},
z: 2,
axisTick: {
show: false
},
axisLabel: {
formatter: "{value}",
color: "#FFF", //var(--primary-text-color)
inside: false,
// ...
show: true
}
// boundaryGap: [0, 0.01]
},
yAxis: {
type: "category",
data: ["Brazil", "Indonesia", "USA", "India", "China", "World"],
show: true,
position: "left",
axisLine: {
show: false
},
z: 3,
axisTick: {
show: false
},
axisLabel: {
color: "#FFF", //var(--primary-text-color)
inside: true,
// ...
show: true
},
nameLocation: "start"
},
series: [
{
name: "2022",
type: "bar",
data: [18203, 23489, 29034, 104970, 131744, 630230],
label: {
show: true,
position: "top",
formatter: "{c}",
// position:"insideRight",
position: ["100%", "50%"]
},
yAxis: {
position: "top"
},
itemStyle: {
color: {
type: "linear",
x: 0,
y: 0,
x2: 1,
y2: 0,
colorStops: [
{
offset: 0,
color: "#008D8E" // --histogram-item-gradient-background
},
{
offset: 1,
color: "#24C1C3" // color at 100%
}
],
global: false // default is false
},
borderRadius: 4,
normal: {
label: {
show: true,
position: "outside"
}
}
}
}
]
};
const App: React.FC = () => {
return (
<ReactECharts
theme = {"dark"}
style = {{ height: 400, width: 400 }}
option = {options}
opts = {{ renderer: "svg" }}
/>
);
};
export default App;
<script src = "https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
Насколько я вижу, метки всегда расположены относительно полос, поэтому нет возможности разместить их справа.
Однако эффект, который вы ищете, может быть достигнут путем создания вторичной оси y, размещения этой оси справа от графика и установки меток этой оси на сами значения.
Требуются и другие настройки:
max
оси x на максимальное значение данных, чтобы избежать установки максимума на круглое значение, которое создаст пробел справа.grid.containLabel
на true
, чтобы обеспечить масштабирование графика таким образом, чтобы метки вторичной оси y не были обрезаны.const data = [18203, 23489, 29034, 104970, 131744, 630230];
const myChart = echarts.init(document.querySelector('#chart'), 'dark');
const options = {
title: {
text: "World Populationss",
show: false
},
tooltip: {
trigger: "axis",
show: false,
axisPointer: {
type: "none"
}
},
legend: { show: false },
grid: {containLabel: true},
xAxis: {
type: "value",
show: false,
axisLine: {
show: false
},
max: Math.max(...data),
z: 2,
axisTick: {
show: false
},
axisLabel: {
formatter: "{value}",
color: "#FFF", //var(--primary-text-color)
inside: false,
show: true
},
boundaryGap: [0, 0.01]
},
yAxis: [{
type: "category",
data: ["Brazil", "Indonesia", "USA", "India", "China", "World"],
show: true,
position: "left",
axisLine: {
show: false
},
z: 3,
axisTick: {
show: false
},
axisLabel: {
color: "#FFF", //var(--primary-text-color)
inside: true,
// ...
show: true
},
nameLocation: "start"
},
{
type: "category",
data: data,
position: "right",
axisLine: {
show: false
},
axisTick: {
show: false
},
axisLabel: {
color: "#FFF", //var(--primary-text-color)
inside: false,
show: true
},
}],
series: [
{
name: "2022",
type: "bar",
data: data,
label: {
show: false,
formatter: "{c}",
position: "right",
distance: 0
},
itemStyle: {
color: {
type: "linear",
x: 0,
y: 0,
x2: 1,
y2: 0,
colorStops: [
{
offset: 0,
color: "#008D8E" // --histogram-item-gradient-background
},
{
offset: 1,
color: "#24C1C3" // color at 100%
}
],
global: false // default is false
},
borderRadius: 4
// normal: {
// label: {
// show: true,
// position: ["100%", "50%"]
// }
// }
}
}
]
};
myChart.setOption(options);
<div id = "chart" style = "width: 400px;height: 400px"></div>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/echarts/5.4.1/echarts.min.js"></script>
Вот вилка вашего приложения для реагирования