Облако слов с высокой диаграммой в пользовательской форме

#javascript #highcharts

#javascript #highcharts

Вопрос:

Я использую highchart word cloud на своем веб-сайте, и он работает нормально. Но возможно ли иметь wordcloud в любой пользовательской форме?

Например, круглое или в форме звезды?

Рабочий код для отображения прямоугольного облака слов:

 var text = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean bibendum erat ac justo sollicitudin, quis lacinia ligula fringilla. Pellentesque hendrerit, nisi vitae posuere condimentum, lectus urna accumsan libero, rutrum commodo mi lacus pretium erat. Phasellus pretium ultrices mi sed semper. Praesent ut tristique magna. Donec nisl tellus, sagittis ut tempus sit amet, consectetur eget erat. Sed ornare gravida lacinia. Curabitur iaculis metus purus, eget pretium est laoreet ut. Quisque tristique augue ac eros malesuada, vitae facilisis mauris sollicitudin. Mauris ac molestie nulla, vitae facilisis quam. Curabitur placerat ornare sem, in mattis purus posuere eget. Praesent non condimentum odio. Nunc aliquet, odio nec auctor congue, sapien justo dictum massa, nec fermentum massa sapien non tellus. Praesent luctus eros et nunc pretium hendrerit. In consequat et eros nec interdum. Ut neque dui, maximus id elit ac, consequat pretium tellus. Nullam vel accumsan lorem.';
var lines = text.split(/[,. ] /g),
    data = lines.reduce(function (arr, word) {
        var obj = arr.find(function (obj) {
            return obj.name === word;
        });
        if (obj) {
            obj.weight  = 1;
        } else {
            obj = {
                name: word,
                weight: 1
            };
            arr.push(obj);
        }
        return arr;
    }, []);

Highcharts.chart('container', {
    accessibility: {
        screenReaderSection: {
            beforeChartFormat: '<h5>{chartTitle}</h5>'  
                '<div>{chartSubtitle}</div>'  
                '<div>{chartLongdesc}</div>'  
                '<div>{viewTableButton}</div>'
        }
    },
    series: [{
        type: 'wordcloud',
        data: data,
        name: 'Occurrences'
    }],
    title: {
        text: 'Wordcloud of Lorem Ipsum'
    }
});  
 <script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/modules/wordcloud.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>
<script src="https://code.highcharts.com/modules/export-data.js"></script>
<script src="https://code.highcharts.com/modules/accessibility.js"></script>

<figure class="highcharts-figure">
    <div id="container"></div>
</figure>  

Ответ №1:

Существует всего несколько встроенных алгоритмов, но вы можете попробовать, например, спиральный.
Однако вы также можете создать свой алгоритм в любой воображаемой форме, подобной той, которую я сделал в демонстрации ниже (чтобы попробовать, раскомментируйте placementStrategy ).
Подробнее об этом в документации: https://www.highcharts.com/docs/chart-and-series-types/word-cloud-series#custom-spiralling-algorithm

API: https://api.highcharts.com/highcharts/series.wordcloud.spiral
Живая демонстрация: https://jsfiddle.net/BlackLabel/ug1e6sbx/