【问题标题】:Column chart: how to show all labels on horizontal axis柱形图:如何在水平轴上显示所有标签
【发布时间】:2013-07-19 09:30:06
【问题描述】:

我一直试图在图表的横轴上显示所有标签,但我无法做到!

我尝试使用 hAxis.showTextEvery=1 但不起作用

(见https://developers.google.com/chart/interactive/docs/gallery/columnchart)。

基本上,我还想显示上图中目前缺少的数字“5”、“7”和“9”。

这里是 JavaScript 代码,非常感谢。

<script type="text/javascript">
 google.setOnLoadCallback(drawChart1);
 function drawChart1(){
     var data = new google.visualization.DataTable(
     {
        "cols":[
            {"id":"","label":"ratings","type":"number"},
            {"id":"","label":"# of movies","type":"number"}],
            "rows":[
                {"c":[{"v":9},{"v":26}]},
                {"c":[{"v":8},{"v":64}]},
                {"c":[{"v":10},{"v":5}]},
                {"c":[{"v":7},{"v":50}]},
                {"c":[{"v":6},{"v":38}]},
                {"c":[{"v":5},{"v":10}]},
                {"c":[{"v":2},{"v":1}]},
                {"c":[{"v":4},{"v":1}]}
            ]});

     var options = {
        "title":"Rating distribution",
        "vAxis":{"title":"# of movies","minValue":0},
        "hAxis":{"title":"Ratings","maxValue":10},"legend":"none","is3D":true,"width":800,"height":400,"colors":["red"]
     };
     var chart = new google.visualization.ColumnChart(document.getElementById('chart_movies_per_rating'));chart.draw(data, options);
 }
 </script> 

更新: 这是我按照下面的答案开发的解决方案(再次感谢!)。 http://jsfiddle.net/mdt86/x8dafm9u/104/

<script type="text/javascript">
google.setOnLoadCallback(drawChart1); 
function drawChart1(){ 
var data = new google.visualization.DataTable( 
     {"cols": 
        [{"id":"","label":"ratings","type":"string"},
        {"id":"","label":"# of movies","type":"number"}], 
             "rows":
             [{"c":[{"v":"0"},{"v":0}]},
             {"c":[{"v":" 1"},{"v":0}]},
             {"c":[{"v":" 2"},{"v":1}]},
             {"c":[{"v":" 3"},{"v":0}]},
             {"c":[{"v":" 4"},{"v":1}]},
             {"c":[{"v":" 5"},{"v":10}]},
             {"c":[{"v":" 6"},{"v":38}]},
             {"c":[{"v":" 7"},{"v":50}]},
             {"c":[{"v":" 8"},{"v":64}]},
             {"c":[{"v":" 9"},{"v":26}]},
             {"c":[{"v":" 10"},{"v":5}]}
             ]
        }
 ); 

 var options = 
    {"title":"Rating distribution",
    "vAxis":{"title":"# of movies","minValue":0},
    "hAxis":{"title":"Ratings","maxValue":10},
    "legend":"none",
    "is3D":true,
    "width":800,
    "height":400,
    "colors":["CC0000"]};
    var chart = new google.visualization.ColumnChart(document.getElementById('chart_movies_per_rating'));
    chart.draw(data, options);
 } 
    </script>

【问题讨论】:

  • 您在 hAxis 下的 UPDATE 代码中没有遗漏 showTextEvery:1 吗? (正如@Jeremy Faller 的回答)
  • 如下所述,不,对我来说第 4 步,即不需要 showTextEvery:1。见我的 jsfiddle jsfiddle.net/mdt86/x8dafm9u/104

标签: google-visualization


【解决方案1】:

您的问题与ColumnChart 中连续与离散的细微差别有关。基本上,hAxis 上的标签具有连续值,showTextEvery 仅适用于离散值。要解决此问题,我将执行以下操作:

  1. 将所有缺失的评分插入图表(即,如果评分“3”没有值,则插入零)。
  2. 对图表中的评级进行排序。 (Google 图表可以为您排序,但直接订购可能更容易。)
  3. 将评级更改为{"id":"","label":"ratings","type":"string"},
  4. 在选项中使用 showTextEvery:1

下面是一些演示代码:

var data = new google.visualization.DataTable(
{
  "cols":[
    {"id":"","label":"ratings","type":"string"},
    {"id":"","label":"# of movies","type":"number"}],
  "rows":[
    {"c":[{"v":'10'},{"v":5}]},
    {"c":[{"v":'9'}, {"v":26}]},
    {"c":[{"v":'8'}, {"v":64}]},
    {"c":[{"v":'7'}, {"v":50}]},
    {"c":[{"v":'6'}, {"v":38}]},
    {"c":[{"v":'5'}, {"v":10}]},
    {"c":[{"v":'4'}, {"v":1}]},
    {"c":[{"v":'3'}, {"v":0}]},
    {"c":[{"v":'2'}, {"v":1}]},
    {"c":[{"v":'1'}, {"v":0}]},
  ]});

var options = {
  "title":"Rating distribution",
  "vAxis":{"title":"# of movies","minValue":0},
  "hAxis":{"title":"Ratings",showTextEvery:1},
  "legend":"none",
  "width":800,"height":400,"colors":["red"]
};

【讨论】:

  • 我知道 showTextEvery 的文档说它只适用于离散的 hAxis,但它适用于我的连续(日期)hAxis,这里:sealevel.info/co2.html
【解决方案2】:

除了 Jeremy 的解决方案,另一种方法是在 hAxis 上继续使用连续值,但指定您想要的网格线数,这应该与您想要的标签数相同。如果你想要 10 个标签,从 1 到 10,这应该可以工作:

hAxis: { gridlines: { count: 10 } }

【讨论】:

  • 这显示了十个标签,但带有十进制值,而不是 0-1-2-3...-10,它们是:2.8 3.6 4.4 5.2 6.0 6.8 7.6 8.4 9.2 10.0 无论如何谢谢!跨度>
  • 在这种情况下,您还需要将 viewWindow.min 和 .max 设置为 1 和 10。如果要包括 0 和 10,则 gridlines.count 将为 11 .
猜你喜欢
  • 2012-03-30
  • 2019-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多