Создание гистограммы Rechart с закругленными краями

Создание гистограммы Rechart с закругленными краями

Я пытаюсь создать подобную гистограмму, где полоса имеет длину X, а длина каждого сегмента полосы пропорциональна проценту содержащихся в ней данных. Я подобрался довольно близко, создав гистограмму с вертикальным макетом, но не могу понять, как получить закругленные края. Я пробовал border = {x} на компонентах Bar, но это округляет обе стороны полосы, и я просто хочу, чтобы левая сторона первой и правая сторона второй полосы были закруглены. Любой совет? Или я, возможно, собираюсь использовать неправильные компоненты для начала?

Вот что у меня есть на данный момент, и скриншот результата.

const {BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, Legend} = Recharts;
const data = [
      {name: '1', a: 50, b: 20, c: 10},
];
const StackedBarChart = React.createClass({
  render () {
  	return (
    	<BarChart layout = "vertical" width = {600} height = {50} data = {data}
            margin = {{top: 20, right: 30, left: 20, bottom: 5}}>
       <XAxis hide  type = "number"/>
       <YAxis hide dataKey = "name" type = "category"/>
       <Tooltip />
       <Bar dataKey = "a" stackId = "a" fill = "#8884d8" radius = {20} />
       <Bar dataKey = "b" stackId = "a" fill = "#8884d8" />
       <Bar dataKey = "c" stackId = "a" fill = "black" radius = {20}/>
      </BarChart>
    );
  }
})

ReactDOM.render(
  <StackedBarChart />,
  document.getElementById('container')
);
<script src = "https://cdnjs.cloudflare.com/ajax/libs/react/15.6.2/react.min.js"></script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/react-dom/15.6.2/react-dom.min.js"></script>
<script src = "https://unpkg.com/recharts/umd/Recharts.min.js"></script>
<div id = "container">
  <!-- This element's contents will be replaced with your component. -->
</div>

Не уверен, почему этот фрагмент не работает, поэтому вот JSFiddle https://jsfiddle.net/nur2t39y/

Создание гистограммы Rechart с закругленными краями

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
14
0
9 140
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я нашел выпуск Github, в котором показан пример использования массива для опоры radius, что позволяет указать радиус для каждого угла полосы. https://github.com/recharts/recharts/issues/793

Вот новый рабочий код и скриншот результата

const {BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, Legend} = Recharts;
const data = [
      {name: '1', a: 50, b: 20, c: 10},
];
const StackedBarChart = React.createClass({
	render () {
  	return (
    	<BarChart layout = "vertical" width = {600} height = {50} data = {data}
            margin = {{top: 20, right: 30, left: 20, bottom: 5}}>
       <XAxis hide  type = "number"/>
       <YAxis hide dataKey = "name" type = "category"/>
       <Tooltip />
       <Bar dataKey = "a" stackId = "a" fill = "#8884d8" radius = {[10, 0, 0, 10]}/>
       <Bar dataKey = "b" stackId = "a" fill = "#82ca9d" />
       <Bar dataKey = "c" stackId = "a" fill = "black" radius = {[0, 10, 10, 0]}/>
      </BarChart>
    );
  }
})

ReactDOM.render(
  <StackedBarChart />,
  document.getElementById('container')
);

Другие вопросы по теме