Как изменить ширину полосы столбца Google диаграммы?

#javascript #html #charts

Вопрос:

Как я могу изменить размер ширины полосы столбца диаграммы Google? Я попытался добавить «панель: { Ширина группы:» 20%»}», но это ничего не делает с диаграммой.

введите описание изображения здесь

Я действительно хотел, чтобы он стал тоньше.

Вот код, который я хочу использовать из Google диаграммы:

 <html>
  <head>
    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
    <script type="text/javascript">
        google.charts.load('current', {'packages':['bar']});
      google.charts.setOnLoadCallback(drawChart);

      function drawChart() {
        var data = google.visualization.arrayToDataTable([
          ['Year', 'Sales', 'Expenses', 'Profit'],
          ['2017', 1030, 540, 350]
        ]);

        var options = {
          chart: {
            title: 'Company Performance',
            subtitle: 'Sales, Expenses, and Profit: 2014-2017',
          }
        };

        var chart = new google.charts.Bar(document.getElementById('chart_div'));

        chart.draw(data, google.charts.Bar.convertOptions(options));
      }
    </script>
  </head>
  <body>
    <div id="chart_div" style="width: 800px; height: 500px;"></div>
  </body>
</html>
 

Комментарии:

1. Вы хотите изменить ширину только одного столбца или всех?

2. @testing_22 Все они

Ответ №1:

Согласно документации,

Графики материалов находятся в бета-версии. Внешний вид и интерактивность в значительной степени являются окончательными, но многие параметры, доступные в классических графиках, в них еще недоступны. Вы можете найти список параметров, которые еще не поддерживаются в этой проблеме.

Одним из таких вариантов является тот bar.groupWidth , который, похоже, еще не получил поддержки.

В этом случае, поскольку вы работаете с группой баров и в них есть только один массив информации data :

 ['2017', 1030, 540, 350]
 

тогда этот вариант, похоже, не работает. Однако, если было две или более групп, это, казалось, оказывало влияние, но ограниченным образом. Тем не менее, я смог найти некоторые обходные пути, каждый из которых имеет свои положительные аспекты и недостатки.

Переход от материальных диаграмм к классическим диаграммам

Здесь вам нужно восстановить код диаграммы в соответствии с классическим

  • Плюсы: опции полностью поддерживаются
  • Минусы: вы перейдете от материальных диаграмм к классическим диаграммам
 google.charts.load("current", { packages: ['corechart'] });
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
    var data = google.visualization.arrayToDataTable([
        ['Type', 'Financial status',{ role: "style" }],
        ["Sales", 1030, "#4285f4"],
        ["Expenses", 540, "#db4437"],
        ["Profit", 350, "f4b400"],
    ]);

    var view = new google.visualization.DataView(data);
      
    var options = {
        title: "Company Performance",
        subtitle: "Sales, Expenses, and Profit: 2017",
        width: 600, // chart width
        bar: { groupWidth: "45%" },  // width of bars here
        legend: { position: "none" },
    };
    var chart = new google.visualization.ColumnChart(document.getElementById("columnchart_values"));
    chart.draw(view, options);
} 
 <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
  <div id="columnchart_values" style="width: 900px; height: 300px;"></div> 

Разделите эту единственную группу баров на отдельные бары

Поместите эту единственную панель групп в разные массивы и адаптируйте свои метки

  • Плюсы: ширина действительно изменится от 0 до 100% в groupWidth
  • Минусы: теряет цветные полосы
 google.charts.load('current', { 'packages': ['bar'] });
google.charts.setOnLoadCallback(drawChart);

function drawChart() {
    var data = google.visualization.arrayToDataTable([
        ['Type', 'Financial status'],
        ["Sales", 1030],
        ["Expenses", 540],
        ["Profit", 350],
    ]);

    var options = {
        chart: {
            title: 'Company Performance',
            subtitle: 'Sales, Expenses, and Profit: 2017',
        },
        bar: { groupWidth: '50%' }, // change width here
        width: 600, // width of the chart
        height: 400 // height of the chart
    };

    var chart = new google.charts.Bar(document.getElementById('chart_div'));
    chart.draw(data, google.charts.Bar.convertOptions(options));
}

google.charts.load('current', { 'packages': ['bar'] });
google.charts.setOnLoadCallback(drawChart); 
 <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chart_div" style="width: 900px; height: 300px;"> 

Используйте бессмысленные массивы

Поместите массив информации в середину двух других бессмысленных массивов, чтобы вы сосредоточили свои основные данные и создавали впечатление

  • Плюсы: по-прежнему использует дизайн диаграммы материалов
  • Минусы: растягивает прутья, не обеспечивает пространства между прутьями
 google.charts.load('current', { 'packages': ['bar'] });
google.charts.setOnLoadCallback(drawChart);

function drawChart() {
    var data = google.visualization.arrayToDataTable([
        ['Year', 'Sales', 'Expenses', 'Profit'],
        [' ', 0, 0, 0], // meaningless
        ['2017', 1030, 540, 350],
        [' ', 0, 0, 0] // meaningless
    ]);

    var options = {
        chart: {
            title: 'Company Performance',
            subtitle: 'Sales, Expenses, and Profit: 2017',
        },
        bar: { groupWidth: '90%' }, // change width of bar here,
        width: 600, // width of the chart
        height: 400, // height of the chart
    };

    var chart = new google.charts.Bar(document.getElementById('chart_div'));
    chart.draw(data, google.charts.Bar.convertOptions(options));
} 
 <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chart_div" style="width: 900px; height: 300px;"> 

Комментарии:

1. Спасибо тебе за творческий ответ, парень. Я забыл упомянуть в своем вопросе, что цвета важны, потому что в них может быть несколько наборов данных, потому что моя система, над которой я работаю, динамична. Поэтому важно иметь разные цвета для каждой информации, чтобы легко идентифицировать ее. В любом случае, ваш ответ окажет мне большую помощь, когда речь зайдет о том же вопросе, что и ваш ответ. это мне очень поможет. Еще раз спасибо.