Charts 用于显示最小/最大/平均值的条形图

Charts 用于显示最小/最大/平均值的条形图,charts,highcharts,google-visualization,jfreechart,bar-chart,Charts,Highcharts,Google Visualization,Jfreechart,Bar Chart,更新:我会选择任何图表库,而不仅仅是谷歌图表: 我想使用来可视化以最小/最大值为条形显示的Access统计数据行,以及以水平线显示的平均值 我设法显示了最小值/最大值(仅将序列堆叠为最小值和最大值): 代码(用于输入)为 函数drawVisualization(){ //创建并填充数据表。 var data=google.visualization.arrayToDataTable([ [‘功能’、‘最小’、‘最大’], [functionA',0150], [functionB',11100

更新:我会选择任何图表库,而不仅仅是谷歌图表:

我想使用来可视化以最小/最大值为条形显示的Access统计数据行,以及以水平线显示的平均值

我设法显示了最小值/最大值(仅将序列堆叠为最小值和最大值):

代码(用于输入)为

函数drawVisualization(){
//创建并填充数据表。
var data=google.visualization.arrayToDataTable([
[‘功能’、‘最小’、‘最大’],
[functionA',0150],
[functionB',11100],
[functionC',20150],
['functionad',5,7],
[functionE',0,22],
['functionF',23,55]
]);
//创建并绘制可视化。
新的google.visualization.BarChart(document.getElementById('visualization'))。
绘制(数据、,
{标题:“最小/最大演示”,
宽度:600,高度:400,
isStacked:是的,
哈克斯:{标题:“持续时间[毫秒]”}
}
);
}
现在我想积分平均值,得到如下结果:


有人能给我一些如何实现这一点的提示吗?

看起来您正在搜索javascript解决方案。。。但你的问题被贴上了jfreechart标签。。。下面是jfreechart代码:(…如果是webapp,您需要提供图像,例如通过rest服务)

import java.awt.*;
导入org.jfree.chart.*;
导入org.jfree.chart.axis.*;
导入org.jfree.chart.plot.*;
导入org.jfree.chart.renderer.category.*;
导入org.jfree.data.category.*;
导入org.jfree.ui.*;
公共类StackedAndLevelChart扩展了ApplicationFrame{
公共StackedAndLevel图表(最终字符串标题){
超级(标题);
最终JFreeChart chart=constructChart();
最终图表面板=新图表面板(图表);
设置内容窗格(面板);
}
JFreeChart构造图(){
DefaultCategoryDataset barDS=新的DefaultCategoryDataset();
对象[][]VAL={
{“函数”、“最小”、“最大”},
{“functionA”,0150},
{“functionB”,11100},
{“functionC”,20150},
{“函数”,5,7},
{“functionE”,0,22},
{“functionF”,23,55}
};

对于(int i=1;i看起来您正在搜索javascript解决方案……但您的问题已用jfreechart标记……因此,以下是jfreechart代码:(…对于webapp,您需要提供图像,例如通过rest服务)

import java.awt.*;
导入org.jfree.chart.*;
导入org.jfree.chart.axis.*;
导入org.jfree.chart.plot.*;
导入org.jfree.chart.renderer.category.*;
导入org.jfree.data.category.*;
导入org.jfree.ui.*;
公共类StackedAndLevelChart扩展了ApplicationFrame{
公共StackedAndLevel图表(最终字符串标题){
超级(标题);
最终JFreeChart chart=constructChart();
最终图表面板=新图表面板(图表);
设置内容窗格(面板);
}
JFreeChart构造图(){
DefaultCategoryDataset barDS=新的DefaultCategoryDataset();
对象[][]VAL={
{“函数”、“最小”、“最大”},
{“functionA”,0150},
{“functionB”,11100},
{“functionC”,20150},
{“函数”,5,7},
{“functionE”,0,22},
{“functionF”,23,55}
};
对于高图中的(int i=1;i样本:

海图中的示例:


似乎标准的方框图应该给你想要的东西,但它是一种非常标准的图表类型。我会找到一种方法用你的数据绘制方框图。还是我遗漏了什么?

似乎标准的方框图应该给你想要的东西,但它是一种非常标准的图表类型。我会找到一种方法来绘制一个bo用您的数据绘制x图。还是我遗漏了什么?

在第一个优先级,我更喜欢JS解决方案,但如果没有可用的,我会选择任何解决方案:-)-您的示例非常好,非常感谢您的帮助!在第一个优先级,我更喜欢JS解决方案,但如果没有可用的,我会选择任何解决方案:-)-您的示例非常有效,非常感谢您的帮助!Thansk提供了解决方案!是否也可以使用问题中的所有数据进行一次arry(实际上,此处缺少平均值)不必将其拆分?按设计的Highcharts要求不同的条形图/标记位于不同的系列中。这是一个很好的解决方案!但是:您必须注意从之前的[max]中减去值[min],因为最大条形图附着在最小条形图上。例如“f1”最大值:100,最小值:13->显示最大值为113。如果您之前正确地减去它,这是可以的。这一点很好。在这种情况下,只需删除
堆叠
选项,而改为设置
分组:false
:Thansk作为解决方案!是否也可以像问题中那样对所有数据进行一次arry处理(实际上,这里缺少平均值)不必将其拆分?按设计的Highcharts要求不同的条形图/标记位于不同的系列中。这是一个很好的解决方案!但是:您必须注意从之前的[max]中减去值[min],因为最大条形图附着在最小条形图上。例如“f1”最大值:100,最小值:13->显示最大值为113。如果之前正确减去它,这是可以的。这一点很好。在这种情况下,只需删除
堆叠
选项,而是设置
分组:false
import java.awt.*;
import org.jfree.chart.*;
import org.jfree.chart.axis.*;
import org.jfree.chart.plot.*;
import org.jfree.chart.renderer.category.*;
import org.jfree.data.category.*;
import org.jfree.ui.*;

public class StackedAndLevelChart extends ApplicationFrame {

    public StackedAndLevelChart(final String title) {
        super(title);
        final JFreeChart chart = constructChart();
        final ChartPanel panel = new ChartPanel(chart);
        setContentPane(panel);
    }

    JFreeChart constructChart() {
        DefaultCategoryDataset barDS = new DefaultCategoryDataset();
        Object [][] vals = {
            {"Function", "Min", "Max"},
            {"functionA",  0,    150},
            {"functionB",  11,    100},
            {"functionC",  20,    150},
            {"functionD",  5,    7},
            {"functionE",  0,    22},
            {"functionF",  23,    55}
        };
        for (int i=1; i<vals.length; i++) {
            barDS.addValue((Number)vals[i][1], (String)vals[0][1], (String)vals[i][0]);
            barDS.addValue((Number)vals[i][2], (String)vals[0][2], (String)vals[i][0]);
        }

        JFreeChart chart = ChartFactory.createStackedBarChart(
            "Min/Max demo",              // chart title
            null,                        // domain axis label
            "duration [ms]",             // range axis label
            barDS,                       // data
            PlotOrientation.HORIZONTAL,  // the plot orientation
            true,                        // legend
            true,                        // tooltips
            false                        // urls
        );

        DefaultCategoryDataset levelDS = new DefaultCategoryDataset();
        double [] avg = { 0, 48, 20, 70, 5, 10, 45 };
        for (int i=1; i<avg.length; i++) {
            levelDS.addValue(avg[i], "avg", (String)vals[i][0]);
        }

        CategoryPlot plot = chart.getCategoryPlot();
        plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT);
        chart.getLegend().setPosition(RectangleEdge.RIGHT);

        CategoryItemRenderer renderer1 = plot.getRenderer();
        renderer1.setSeriesPaint(0, Color.BLUE);
        renderer1.setSeriesPaint(1, Color.RED);

        CategoryItemRenderer renderer2 = new LevelRenderer();
        plot.setDataset(1, levelDS);
        plot.setRenderer(1, renderer2);
        plot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);


        renderer2.setSeriesPaint(0, Color.BLACK);
        renderer2.setSeriesStroke(0, new BasicStroke(5.0f));        

        return chart;
    }


    public static void main(String[] args) {
        StackedAndLevelChart demo = new StackedAndLevelChart("");
        demo.pack();
        RefineryUtilities.centerFrameOnScreen(demo);
        demo.setVisible(true);
    }
}
 $(document).ready(function () {
    chart = new Highcharts.Chart({
        chart: {
            renderTo: 'container',
            type: 'bar'
        },
        title: {
            text: 'Height Versus Weight of 507 Individuals by Gender'
        },
        subtitle: {
            text: 'Source: Heinz  2003'
        },
        xAxis: {
            categories: ['f1', 'f2', 'f3']
        },
        series: [ {
            name: 'max',
            stacking: true,
            color: 'red',
            data: [
                [100],
                [120],
                [50]
            ]
        }, {
            name: 'min',
            stacking: true,
            color: 'blue',
            data: [
                [13],
                [50],
                [1]
            ]
        }, {
            type: 'scatter',
            name: 'avg',
            color: 'black',
            data: [
                [44],
                [55],
                [12]
            ]
        }]
    });