Видаліть прокладки або поля з графіків Google


151

// Load the Visualization API and the piechart package.
google.load('visualization', '1.0', {'packages':['corechart']});

// Set a callback to run when the Google Visualization API is loaded.
google.setOnLoadCallback(drawChart);

// Callback that creates and populates a data table,
// instantiates the pie chart, passes in the data and
// draws it.
function drawChart() {

  // Create the data table.
  var data = new google.visualization.DataTable();
  data.addColumn('string', 'Topping');
  data.addColumn('number', 'Slices');

  var myData = {
    'Mushrooms': 3,
    'Onions': 1,
    'Olives': 1,
    'Zucchini': 1,
    'Pepperoni': 2
  };

  var rows = [];
  for (element in myData) {
      rows.push([element + " (" + myData[element] + ")", myData[element]])
  }
  data.addRows(rows);

  // Set chart options
  var options = {'title':'How Much Pizza I Ate Last Night',
                 'width':450,
                 'height':300};

  // Instantiate and draw our chart, passing in some options.
  var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
  chart.draw(data, options);
}
<script type="text/javascript" src="https://www.google.com/jsapi"></script>

<div id="chart_div"></div>

Приклад скрипки

Як видалити прокладки або поля в цьому прикладі?


якщо хтось хоче право виправдати, тому що у вас є вимірювання зліва від лінійної діаграми, chartArea: {width: '70%', left: '30%'}зробив для мене трюк. Джерело: code.google.com/p/google-visualization-api-isissue/isissue/…
IsmailS

Відповіді:


246

Додаючи та настроюючи деякі параметри конфігурації, перелічені в документації API , ви можете створити безліч різних стилів. Наприклад, ось версія , яка видаляє більшу частину додаткового порожнього простору шляхом установки chartArea.widthна 100% і chartArea.heightна 80% і переміщення legend.positionв нижній частині :

// Set chart options
var options = {'title': 'How Much Pizza I Ate Last Night',
               'width': 350,
               'height': 400,
               'chartArea': {'width': '100%', 'height': '80%'},
               'legend': {'position': 'bottom'}
    };

Якщо ви хочете налаштувати його більше, спробуйте змінити ці значення або скористайтеся іншими властивостями за посиланням вище.


78

Я досить пізно, але будь-який користувач, який шукає це, може отримати допомогу в цьому. Всередині параметрів можна передати новий параметр, який називається chartArea .

        var options = {
        chartArea:{left:10,top:20,width:"100%",height:"100%"}
    };

Параметри зліва та вгорі визначатимуть обсяг прокладки зліва та зверху. Сподіваюсь, це допоможе.


chartArea.top зробив трюк для мого динамічного розміру діла. Дякую.
Blamkin86

60

Я приїхав сюди, як і більшість людей з цим самим питанням, і залишився шокований, що жодна відповідь навіть віддалено не працює.

Для всіх, хто цікавиться, ось власне рішення:

... //rest of options
width: '100%',
height: '350',
chartArea:{
    left:5,
    top: 20,
    width: '100%',
    height: '350',
}
... //rest of options

Ключ тут не має нічого спільного зі значеннями "ліворуч" або "верхній". Але швидше, що:

Розміри як діаграми, так і області діаграми встановлюються та встановлюються на однакову величину

Як доповнення до моєї відповіді. Сказане дійсно вирішить проблему "надмірного" набивання / запасу / пробілу. Однак, якщо ви хочете включити мітки осей та / або легенду, вам потрібно зменшити висоту та ширину області діаграми, щоб трохи менше зовнішньої ширини / висоти. Це "скаже" API діаграми, що є достатньо місця для відображення цих властивостей. Інакше це їх щасливо виключить.


2
Як доповнення до моєї відповіді. Це дійсно вирішить проблему "надмірного" набивання / запасу / пробілу. Однак, якщо ви хочете включити мітки осей та / або легенду, вам потрібно зменшити висоту та ширину області діаграми, щоб трохи менше зовнішньої ширини / висоти. Це "скаже" API діаграми, що є достатньо місця для відображення цих властивостей. Інакше це їх щасливо виключить.
pimbrouwers

1
Я думаю, що причина, по якій інші рішення не спрацювали для вас, - це те, що вони припускали, що діаграма вставлена ​​в DIV, який вже мав попередньо задані атрибути ширини та висоти, але ви цього не робили. Добре заздалегідь встановити висоту та ширину в HTML, щоб макет сторінки не змінювався, коли графік заповнюється. Це не дозволить речам "стрибати" на сторінці під час завантаження.
Дейв Бертон

@ Дякую за пропозицію, але я не обов'язково згоден. Існує маса ситуацій, коли ви просто не знаєте, якими будуть ці цінності. І, схоже, щонайменше 15 інших людей відчувають, ніби моя пропозиція є адекватною.
pimbrouwers

1
Я згоден, Пім. Якщо ви не знаєте заздалегідь ширину та / або висоту (можливо, тому, що хочете, щоб сторінка відповідала адаптацією), ви не можете встановити ширину та висоту в DIV. Я просто вказував, чому я думаю, що рішення, подані в інших відповідях, працювали саме на них, але не працювали для вас, і чому це гарна ідея встановити ширину та висоту в DIV, якщо можете.
Дейв Бертон

1
З причин @DaveBurton вказує, що це вірна відповідь, якщо працювати з CSS Grid (якою я є)
Stephen R

14

Він відсутній у документах (я використовую версію 43), але ви можете фактично використовувати право та нижнє властивість області діаграми:

var options = {
  chartArea:{
    left:10,
    right:10, // !!! works !!!
    bottom:20,  // !!! works !!!
    top:20,
    width:"100%",
    height:"100%"
  }
};

Таким чином, можна використовувати повну ширину та висоту відгуку та запобігати обрізанню будь-яких міток чи легенд осей.


Можливість використовувати право - це, безумовно, приємне доповнення, однак у випадку діаграми стовпців, яка потребує цифр для вертикальної осі, вона виявиться хитрою, коли значення коливаються на добрий біт - наприклад, діаграма зі значеннями, що варіюються від 0 - Для 100 потрібно ліве значення 20 пікселів, але 0-10 мільйонам знадобиться 100 пікселів, а використання 100 пікселів тоді залишить досить великий запас, який я думаю, що всі ми намагаємося позбутися :) Якщо тільки немає опція, що дозволяє діаграмі регулювати власну ширину, яку мені не вистачає. Будь-які думки про те, як можна було б це вирішити?
користувач3800174

Схоже, вони це задокументували 2 жовтня 2015 року тут: archive.is/lwbQY#selection-2997.0-3011.1
Дейв Бертон

13

Є така можливість, як згадував Аман Вірк :

var options = {
    chartArea:{left:10,top:20,width:"100%",height:"100%"}
};

Але майте на увазі, що прокладка та запас не є для того, щоб вас турбувати. Якщо у вас є можливість перемикатися між різними типами діаграм, як, наприклад, ColumnChart, та тією, що має вертикальні стовпці, тоді вам потрібен певний запас для відображення міток цих рядків.

Якщо ви знімете цей запас, тоді ви побачите лише частину міток або взагалі відсутні етикетки.

Тож якщо у вас є лише один тип діаграми, ви можете змінити поля та прокладки, як сказав Арман. Але якщо є можливість переключення, не змінюйте їх.


11

Існує тема, доступна спеціально для цього

options: {
  theme: 'maximized'
}

з документів діаграми Google:

Наразі доступна лише одна тема:

'максимізовано' - Максимізує область діаграми та малює легенду та всі мітки всередині діаграми. Встановлює такі параметри:

chartArea: {width: '100%', height: '100%'},
legend: {position: 'in'},
titlePosition: 'in', axisTitlesPosition: 'in',
hAxis: {textPosition: 'in'}, vAxis: {textPosition: 'in'}

Це здається найкращим варіантом. Після встановлення теми: "Максимізовано" все одно можна настроїти зовнішній вигляд, наприклад висота: "90%", текстPosition: "поза" тощо
Jiri Kriz
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.