【问题标题】:How do I implement charts in Bootstrap?如何在 Bootstrap 中实现图表?
【发布时间】:2013-09-10 04:40:42
【问题描述】:

我指的是这里存储库背景中的条形图(它们实际上非常微妙): 示例:https://github.com/search?l=ruby&q=stars%3A%3E1&s=forks&type=Repositories

我有一个表格,我希望表格单元格的背景是用户进度的条形图。关于我如何完成这件事的任何指示?

【问题讨论】:

  • 如果您使用 PHP,您可以使用 jpGraph 或任何其他图表库渲染图表并将图像用作background-image。这是我能想到的最合适的解决方案。
  • 哦,我将为此使用 Ruby on Rails
  • 我建议你为 Ruby on Rails 添加标签。顺便说一句:stackoverflow.com/questions/3397414/charts-library-for-ruby

标签: css ruby-on-rails twitter-bootstrap


【解决方案1】:

我建议您使用HighCharts。它非常棒且易于集成。

例子:

HTML

<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/modules/exporting.js"></script>

<div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>

脚本:

$(function () {
        $('#container').highcharts({
            chart: {
                type: 'column'
            },
            title: {
                text: 'Monthly Average Rainfall'
            },
            subtitle: {
                text: 'Source: WorldClimate.com'
            },
            xAxis: {
                categories: [
                    'Jan',
                    'Feb',
                    'Mar',
                    'Apr',
                    'May',
                    'Jun',
                    'Jul',
                    'Aug',
                    'Sep',
                    'Oct',
                    'Nov',
                    'Dec'
                ]
            },
            yAxis: {
                min: 0,
                title: {
                    text: 'Rainfall (mm)'
                }
            },
            tooltip: {
                headerFormat: '<span style="font-size:10px">{point.key}</span><table>',
                pointFormat: '<tr><td style="color:{series.color};padding:0">{series.name}: </td>' +
                    '<td style="padding:0"><b>{point.y:.1f} mm</b></td></tr>',
                footerFormat: '</table>',
                shared: true,
                useHTML: true
            },
            plotOptions: {
                column: {
                    pointPadding: 0.2,
                    borderWidth: 0
                }
            },
            series: [{
                name: 'Tokyo',
                data: [49.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]

            }, {
                name: 'New York',
                data: [83.6, 78.8, 98.5, 93.4, 106.0, 84.5, 105.0, 104.3, 91.2, 83.5, 106.6, 92.3]

            }, {
                name: 'London',
                data: [48.9, 38.8, 39.3, 41.4, 47.0, 48.3, 59.0, 59.6, 52.4, 65.2, 59.3, 51.2]

            }, {
                name: 'Berlin',
                data: [42.4, 33.2, 34.5, 39.7, 52.6, 75.5, 57.4, 60.4, 47.6, 39.1, 46.8, 51.1]

            }]
        });
    });

这里是fiddle

【讨论】:

  • 今天才知道这个,太棒了!
  • highcharts 也可以做地图,比如 Leaflet,马上试试。
  • @Rony,Highchart 是免费的还是付费的..?
  • @bgs 恐怕它不能免费用于商业用途。您可以免费将其用于非商业用途highcharts.com/products/highcharts
【解决方案2】:

晚于我之前的答案,但无论如何可能有用;虽然 gRaphaël Charting 可能是一个过时的替代方案,但更新更好的选择可能是 http://chartjs.org - 仍然没有任何 Flash,具有 MIT 许可证和最近更新的 GitHub。

自从我上次回答以来,我自己一直在使用它,所以现在我有一些网络应用程序,其中一个和另一个。

如果您要重新开始一个项目,请先尝试使用 Chart.js。

【讨论】:

    【解决方案3】:

    Github 使用 HTML canvas 元素做到了这一点。

    本规范定义了 HTML 画布元素的 2D 上下文。 2D 上下文提供对象、方法和属性来绘制和 在画布绘图表面上操作图形。

    如果您使用浏览器检查器,您会在每个列表元素中看到一个带有 canvas 元素的 div。

    <div class="participation-graph">
       <canvas class="bars" data-color-all="#F5F5F5" data-color-owner="#F5F5F5" data-source="/mxcl/homebrew/graphs/owner_participation" height="80" width="640"></canvas>
    </div>
    

    使用 CSS (z-index, position...),您可以将画布放在 li 元素或表格的背景中。

    search 了解符合您要求的 jquery 插件。

    希望这些指针可以帮助您实现这一目标。

    【讨论】:

      【解决方案4】:

      2018 年更新

      这是一个使用 Bootstrap 4 和 ChartJs 的简单示例。为图表使用 HTML5 Canvas 元素...

      <div class="container">
          <div class="row">
              <div class="col-md-6">
                  <div class="card">
                      <div class="card-body">
                          <canvas id="chLine"></canvas>
                      </div>
                  </div>
              </div>
           </div>     
      </div>
      

      然后用合适的 JS 填充图表...

      var colors = ['#007bff','#28a745'];
      var chLine = document.getElementById("chLine");
      var chartData = {
        labels: ["S", "M", "T", "W", "T", "F", "S"],
        datasets: [{
          data: [589, 445, 483, 503, 689, 692, 634],
          borderColor: colors[0],
          borderWidth: 4,
          pointBackgroundColor: colors[0]
        },
        {
          data: [639, 465, 493, 478, 589, 632, 674],
          borderColor: colors[1],
          borderWidth: 4,
          pointBackgroundColor: colors[1]
        }]
      };
      if (chLine) {
        new Chart(chLine, {
        type: 'line',
        data: chartData,
        options: {
          scales: {
            yAxes: [{
              ticks: {
                beginAtZero: false
              }
            }]
          },
          legend: {
            display: false
          }
        }
        });
      }
      

      Bootstrap 4 Charts Demo

      【讨论】:

        【解决方案5】:

        聚会肯定迟到了;无论如何,对于那些对 Lan 提到的 HTML5 画布感兴趣的人,您可以使用具有 MIT 许可证(而不是 HighCharts 双许可证)的gRaphaël Charting。它也不是特定于 Bootstrap 的,所以它更像是一个一般性的建议。

        我不得不承认 HighCharts 的演示看起来非常漂亮,而且我不得不警告 gRaphaël 在精通之前很难理解它。无论如何,您都可以轻松地为您的 gRaphaël 图表添加一些不错的功能(例如,工具提示或缩放效果),因此值得付出努力。

        【讨论】:

        • 关于这个的 Github 已经 4 年没有更新了。我认为可以肯定地说这不是当前 Web 开发的可行选择。
        • 你是绝对正确的。我自己一直在寻找另一个图书馆,自二月以来我一直在使用chartjs.org。仍然是 MIT 许可证,但更好更容易使用。仍然没有任何 Flash 要求。我不会更新这个答案,但会提供另一个答案。
        【解决方案6】:

        您可以使用像 Shield UI 这样的第 3 方库来绘制图表 - 该库经过测试,可在所有旧版和新版网络浏览器和设备上正常运行。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-12-13
          • 2019-02-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多