【问题标题】:Google Charts: Column chart invert y axisGoogle Charts:柱形图反转y轴
【发布时间】:2017-02-18 16:38:06
【问题描述】:

我想反转柱形图的 y 轴,以便将较低的数字显示得较高。

我试过 vAxis: { direction: -1 }

当我这样做时,列从图表顶部出来,我希望列从图表底部出来,如果它们的数字较小,它们会更高。

我在某处读到关于否定数字并使用数字格式将它们显示为正数,但我不知道该怎么做。

我使用公认的答案来得到我想要的 -

编辑: 我通过找到我的一组数据中最大的一个,即最大的 var 来创建自己的量表。最大是我的数据集的最大值,目标是让它稍微大一点,从图表的底部开始,以便该列在图表上的高度有点高,而不是 0 高度。相当硬编码,但适用于我的数据集。

if (biggest <= 15)
{
    biggest = 20;
} else if (biggest <= 45)
{
    biggest = 50;
} else if (biggest <= 70)
{
    biggest = 75;
} else
{   
    if (Math.ceil(biggest / 100) * 100 === biggest)
    {
        // Round up to the next nearest 100
        biggest = Math.ceil(biggest / 100) * 100 + 100;
    } else
    {
        // Round up to the nearest 100
        biggest = Math.ceil(biggest / 100) * 100;
    }
}

然后我将它分成 5 个相等的部分。

var temp1 = (biggest / 5);
var temp2 = (biggest / 5) * 2;
var temp3 = (biggest / 5) * 3;
var temp4 = (biggest / 5) * 4;

然后将其添加到图表中,如下所示:

var options = {
    title: 'Rank Comparison',
    bar: { groupWidth: '75%' },
    vAxis: {
        ticks: [
        // use object notation to provide y-axis labels
        {v: 0, f: biggest.toString()},
        {v: temp1, f: temp4.toString()},
        {v: temp2, f: temp3.toString()},
        {v: temp3, f: temp2.toString()},
        {v: temp4, f: temp1.toString()},
        {v: biggest, f: '0'}
      ]
    },
    chartArea: {
        left: '3.5%',
        width: '79%'
    },
    seriesType: 'bars',
    backgroundColor: 'transparent',
    legend: 
    {
        alignment: 'center'
    }
}

【问题讨论】:

    标签: javascript charts google-visualization


    【解决方案1】:

    请参阅以下工作 sn-p...

    google.charts.load('current', {
      callback: drawChart,
      packages: ['corechart']
    });
    
    function drawChart() {
      var data = google.visualization.arrayToDataTable([
        ['x', 'y'],
        // use object notation to provide formatted number for tooltip
        ['Test', {v: 1, f: '-1'}],
        ['Test', {v: 2, f: '-2'}],
        ['Test', {v: 3, f: '-3'}]
      ]);
    
      var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
      chart.draw(data, {
        vAxis: {
          ticks: [
            // use object notation to provide y-axis labels
            {v: 0, f: '0'},
            {v: 1, f: '-1'},
            {v: 2, f: '-2'},
            {v: 3, f: '-3'},
            {v: 4, f: '-4'}
          ]
        }
      });
    }
    <script src="https://www.gstatic.com/charts/loader.js"></script>
    <div id="chart_div"></div>

    【讨论】:

    • 这不是我所追求的,对不起,如果我没有解释清楚,我希望 y 轴从底部的一个更高的数字开始,并在顶部有 0,就像我附上的图片一样但我不希望酒吧像图片中那样颠倒。所以更高的条应该有一个更接近 0 的值
    • 我能够用你的方式得到我想要的!它有点棘手,因为我不知道动态绘制图表时的值是多少,但我必须想出一种方法来做到这一点!谢谢,我会将图片添加到我的问题中,因为我不确定我是否可以在评论中
    • @AaronVance 你能发布你的最终解决方案吗?
    • @csy_dot_io 我在问题中添加了代码,希望对您有所帮助,它的编码非常硬,但我能做到的最好
    • 非常感谢,我会根据我的用例进行调整。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多