当前位置: 首页 > 知识库问答 >
问题:

高图表图形中的输入字段

华哲茂
2023-03-14

我有一个高图表图形http://jsfiddle.net/jerryvermanen/XRjyc/,但我想添加一个输入字段。输入字段要求一年。输入后:

>

  • 图形应在输入年份的基础上增加一年(因此1992年变为1993年)
  • 图形应在输入年份1显示一条垂直绘图线(因此在1993年显示一条线)
  • 它还应该在五年之后(1998年)和五年之后(2003年)添加一行,以此类推
  • 还应计算这些年份(1993年、1998年、2003年、2008年、2013年)的百分比,并将其添加到文本中。比如,“你支付X%、Y%、Z%等”
  • 让事情变得更复杂一点,对于输入年份1992(4,94%)、1993(3,74%)、1994(4,77%)、1996(4,52%)、1997(4,94%)、1998(3,74%)和1999(4,77%),应在2001年3月1日添加()之间的百分比。

    chart = new Highcharts.Chart({
        exporting: {
        enabled: false
        },
        chart: {
            renderTo: 'container',
            type: 'spline',
            marginRight: 20
        },
        title: {
            text: 'Rente DUO'
        },
        subtitle: {
            text: ''
        },
        xAxis: {
            type: 'datetime',
            dateTimeLabelFormats: { // don't display the dummy year
                month: '%Y',
                year: '%Y'
            }
        },
        yAxis: {
    min:0,
            title: {
                text: 'Werkloosheid (%)'
            },
    
                         plotLines: [{
                value: 0,
                width: 2,
                color: '#000000',
                zIndex: 5
            },            {
                label: {
        text: 'Rente DUO',
        align: 'right'
        },
        value: 5,
                width: 0.5,
                color: '#ffffff',
                zIndex: 1
            }]
        },
        tooltip: {
            formatter: function() {
                    return '<b>'+ this.series.name +'<br/>'+
                    Highcharts.dateFormat('%b %Y', this.x) +':</b> '+ this.y +'%';
            }
        },
    
         plotOptions: {
        spline: {
            lineWidth: 3,
            states: {
                hover: {
                    lineWidth: 4
                }
            },
            marker: {
                enabled: false,
                states: {
                    hover: {
                        enabled: true,
                        symbol: 'circle',
                        radius: 4,
                        lineWidth: 1
                    }
                }
            }
        }
    },
               legend: {
    enabled: false
    },
    

    如果这很复杂,也可以在进入一年后绘制一个新的图表。该图将是具有相同数据的阶梯线图。

    如何做到这一点?

  • 共有1个答案

    苏德容
    2023-03-14

    有趣的要求,我想除了第五个,我都有了。要做到这一点相当容易。您需要绘制线、输入表单和另一个

    首先,您需要从输入表单中提取您的年份,并在其中添加1年(不确定为什么是1年,但请看这里):

    passedYear = parseInt($('input:text').val(), 10) + 1;
    

    然后,您需要将这一人类可读的年份转换为javascript时间戳:

    showYear = Date.UTC(passedYear, 0, 1);
    

    在此,您还需要考虑用户输入的值是否高于数据的最大年份(也低于最小年份)。下面是如何测试大于场景:

    var extremes = chart.xAxis[0].getExtremes();
    var maxYear;
    maxYear = extremes.dataMax;
    if (maxYear > showYear) {
         do stuff
    }
    

    然后,您创建初始plotLine

        chart.xAxis[0].addPlotLine({
            value: showYear,
            color: 'red',
            width: 2,
            id: 'plotLine'
        });
    

    接下来,要以5年为增量显示其他绘图线项目:

    var plInterval;
    plInterval = 5;
        while (nextPL < maxYear) {
            chart.xAxis[0].addPlotLine({
                value: nextPL,
                color: 'red',
                width: 2,
                id: 'plotLine'
            });
            nextYear = nextYear + plInterval;
            nextPL = Date.UTC(nextYear, 0, 1);
        }
    

    这是为了确保我们不会将不必要的plotLine项添加到永远不会显示的无穷大。

    附加要求是在页面上显示“您支付xxxx”文本。为此,您需要一个<代码>

    function getYValue(chartObj, seriesIndex, xValue) {
        var yValue = null;
        var points = chartObj.series[seriesIndex].points;
        for (var i = 0; i < points.length; i++) {
            if (points[i].x >= xValue) break;
            yValue = points[i].y;
        }
        return yValue;
    }
    

    我这样使用它:

    var yVal1;
    yVal1 = getYValue(chart, 0, maxYear);
    strInterestPay = strInterestPay + yVal1 + '%, ';
    

    然后我将这个strIntrestPay写入

    $("div:interest").html(strInterestPay);
    

    现在,我们需要写出额外绘制线项目的百分比:

    yVal1 = getYValue(chart, 0, nextPL);
    strInterestPay = ', ' + yVal1 + '%';
    $('.content').append(strInterestPay);
    

    演示

     类似资料:
    • 问题内容: 我需要在绘图的轴标签中键入希腊字母和埃符号。所以举个例子 除了我实际上希望将“ Angstrom”和“ lambda”替换为实际的符号。我应该怎么做?谢谢! 问题答案: 您不仅可以将原始字符串添加到matplotlib,还可以在matplotlibrc或本地使用以下方式指定字体: 这将更改您的衬线乳胶字体。您也可以像这样指定Sans-serif Helvetica 其他选项包括和及其各

    • 我正在使用Chart.js并将其设置为生成一个漂亮的条形图。不幸的是,当您将鼠标悬停在条形图上时,默认弹出窗口仅显示条形图的值。我想弹出显示组中每个条的标签及其值。你有什么例子吗?非常感谢你! 实例

    • 我的应用程序中有一个客户联系表单,当然需要电话输入。我正在运行Rails 3.2.13并使用Zurb Foundation。我希望找到一个以“(999) 999-9999”形式提供输入掩码的gem,我可以调用它。我的数据确实是本地的,所以我只需要美国格式的数字。 我能够在现场执行验证,但希望将用户限制在输入掩码的更严格范围内。这就是我目前所拥有的。 这方面有什么好东西吗,或者你喜欢的jQuery插

    • 问题内容: 有没有一种快速的方法来创建带有右侧图标的输入文本元素,以清除输入元素本身(如google搜索框)? 我环顾四周,但只发现了如何将图标作为输入元素的背景。是否有jQuery插件或其他工具? 我想要输入文本元素中的图标,例如: 问题答案: 将a添加到您的输入中 该支持相当不错,但在IE <10中不起作用 旧浏览器的可清除输入 如果您需要IE9支持,请采取以下解决方法 使用标准和一些HTML

    • 我正在尝试使用2.3.0绘制chart.js水平条形图- 但它只显示一个小节。我错过了什么?

    • 设置输出选项 输出设置控制如何设置 HTML 文件的格式、如何命名文件和切片,以及在存储优化图像时如何处理背景图像。在 “输出设置 ”对话框中可以设置这些选项。 可以存储输出设置并将它们应用于其它文件。 1要显示 “输出设置 ”对话框,请执行以下任一操作: 存储优化图像时,从 “存储优化结果 ”或 “将优化结果存储为 ”对话框的 “设置 ”弹出菜单中选取 “其它 ”。 从 “存储为 Web 和设备