单代号网络图_代号一图

单代号网络图

单代号网络图

1423051379
这篇文章由史蒂夫·汉纳( Steve Hannah )撰写,他是Codename One团队的最新成员之一,也是社区的长期贡献者。

即将对Codename One进行的更新将包括一个新包(com.codename1.charts),用于在您的应用程序中呈现图表。 其中包括许多常见图表类别的模型和渲染器,包括多种条形图,折线图,散点图和饼图。

目标

对于图表包,我们希望使Codename One开发人员能够向其应用程序添加图表和可视化,而不必包括外部库或嵌入Web视图。 我们还希望利用图形管道中的新功能来最大化性能。

与CN1aChartEngine的区别

该程序包基于现有的CN1aChartEngine库,但是已经进行了实质性的重构,以减小其大小,提高其性能并简化其API。 如果您使用了现有的CN1aChartEngine库,则许多API(例如模型和渲染器)将是熟悉的。 关键区别在于:

  1. API 。 它包括ChartComponent,它是一流的代号一个组件,可以包含在表单内的任何位置。 CN1aChartEngine使用了许多类似Android的抽象(例如View,Intent和Activity)来简化从原始Android库的移植过程。 虽然这确实使移植变得更容易,但它使Codename One开发的API有点混乱。
  2. 表现。 它使用内置的Codename One图形管道来渲染所有图形。 CN1aChartEngine使用CN1Pisces库渲染图形,它比内置管道慢一个数量级。 这是出于历史原因。 最初开发CN1aChartEngine时,内置管道缺少实现图表所需的某些功能。

注意实际上,在重构CN1aChartEngine来生成图表包之前,我将其移植到了内置管道中。 如果您已经在应用程序中使用了CN1aChartEngine,并且希望在无需更改代码的情况下从改进的性能中受益,则可以更新至该版本

设备支持

由于海图程序包利用2D变换和形状,因此需要一些并非所有平台都可用的新图形功能。 当前支持以下平台:

  1. 仿真器
  2. 安卓
  3. 的iOS

如果需要对其他平台的支持,则可能要使用CN1aChartEngine库。

特征

  1. 内置支持许多常见类型的图表,包括条形图,折线图,堆积图,散点图,饼图等。
  2. 捏缩放– ChartComponent类包括可选的捏缩放支持。
  3. 平移支持– ChartComponent类包括对平移的可选支持。

图表类型

com.codename1.charts包包括用于许多不同类型图表的模型和渲染器。 它也是可扩展的,因此您可以根据需要添加自己的图表类型。 以下屏幕截图演示了可以创建的图表类型的一小部分示例。

裁剪

注意上面的屏幕截图来自ChartsDemo应用程序。 您现在可以通过从我们的Subversion存储库中签出该应用程序来开始使用该应用程序。

如何创建图表

向您的应用添加图表涉及四个步骤:

  1. 建立模型。 您可以使用com.codename1.charts.models包中的现有模型类之一为图表构建模型(即数据集)。 本质上,这就是您要添加要显示的数据的地方。
  2. 设置渲染器。 您可以使用com.codename1.charts.renderers包中的现有渲染器类之一为图表创建渲染器。 渲染器允许您指定图表的外观。 例如要使用的颜色,字体,样式。
  3. 创建图表视图。 使用com.codename1.charts.views包中的现有视图类之一。
  4. 创建一个ChartComponent 。 为了将图表添加到UI,您需要将其包装在ChartComponent对象中。

您可以查看ChartsDemo应用程序中的特定示例,但这是一些创建饼图的代码的高级视图。

/**
     * Creates a renderer for the specified colors.
     */
    private DefaultRenderer buildCategoryRenderer(int[] colors) {
        DefaultRenderer renderer = new DefaultRenderer();
        renderer.setLabelsTextSize(15);
        renderer.setLegendTextSize(15);
        renderer.setMargins(new int[]{20, 30, 15, 0});
        for (int color : colors) {
            SimpleSeriesRenderer r = new SimpleSeriesRenderer();
            r.setColor(color);
            renderer.addSeriesRenderer(r);
        }
        return renderer;
    }

    /**
     * Builds a category series using the provided values.
     *
     * @param titles the series titles
     * @param values the values
     * @return the category series
     */
    protected CategorySeries buildCategoryDataset(String title, double[] values) {
        CategorySeries series = new CategorySeries(title);
        int k = 0;
        for (double value : values) {
            series.add("Project " + ++k, value);
        }

        return series;
    }

    public Form createPieChartForm() {

        // Generate the values
        double[] values = new double[]{12, 14, 11, 10, 19};

        // Set up the renderer
        int[] colors = new int[]{ColorUtil.BLUE, ColorUtil.GREEN, ColorUtil.MAGENTA, ColorUtil.YELLOW, ColorUtil.CYAN};
        DefaultRenderer renderer = buildCategoryRenderer(colors);
        renderer.setZoomButtonsVisible(true);
        renderer.setZoomEnabled(true);
        renderer.setChartTitleTextSize(20);
        renderer.setDisplayValues(true);
        renderer.setShowLabels(true);
        SimpleSeriesRenderer r = renderer.getSeriesRendererAt(0);
        r.setGradientEnabled(true);
        r.setGradientStart(0, ColorUtil.BLUE);
        r.setGradientStop(0, ColorUtil.GREEN);
        r.setHighlighted(true);

        // Create the chart ... pass the values and renderer to the chart object.
        PieChart chart = new PieChart(buildCategoryDataset("Project budget", values), renderer);

        // Wrap the chart in a Component so we can add it to a form
        ChartComponent c = new ChartComponent(chart);

        // Create a form and show it.
        Form f = new Form("Budget");
        f.setLayout(new BorderLayout());
        f.addComponent(BorderLayout.CENTER, c);
        return f;
    }

翻译自: https://www.javacodegeeks.com/2015/02/codename-one-charts.html

单代号网络图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
单代号网络图是一种用于表示项目活动和它们之间关系的图形工具。在单代号网络图中,每个活动由一个节点表示,活动之间的关系由箭线表示。每个活动都有一个代号,用于标识和区分不同的活动。 以下是一个单代号网络图计算例题的步骤: 1. 确定活动和它们之间的关系:根据题目给出的信息,确定每个活动以及它们之间的先后关系。活动之间的关系可以是先后关系、并行关系或者依赖关系。 2. 绘制网络图:根据确定的活动和它们之间的关系,使用节点和箭线绘制单代号网络图。确保每个活动都有一个唯一的代号,并按照箭线的方向表示活动的先后关系。 3. 确定活动的持续时间:根据题目给出的信息,确定每个活动的持续时间。持续时间可以是以天、小时或其他单位表示的时间。 4. 计算最早开始时间(ES)和最晚开始时间(LS):从起点开始,按照活动的先后关系计算每个活动的最早开始时间和最晚开始时间。最早开始时间是指在没有任何延迟的情况下,活动可以开始的最早时间;最晚开始时间是指在不影响整个项目进度的情况下,活动可以开始的最晚时间。 5. 计算最早完成时间(EF)和最晚完成时间(LF):根据最早开始时间和活动的持续时间,计算每个活动的最早完成时间和最晚完成时间。最早完成时间是指在没有任何延迟的情况下,活动可以完成的最早时间;最晚完成时间是指在不影响整个项目进度的情况下,活动可以完成的最晚时间。 6. 计算总时差(TF):根据最早完成时间和最晚完成时间,计算每个活动的总时差。总时差是指在不影响整个项目进度的情况下,活动可以延迟的时间。 7. 确定关键路径:根据总时差,确定关键路径。关键路径是指在整个项目中,没有任何活动可以延迟的路径。 8. 计算项目总工期:根据关键路径上的活动持续时间,计算整个项目的总工期。 以下是一个单代号网络图计算例题的示例: ``` 活动代号 持续时间 先驱活动 最早开始时间 最晚开始时间 最早完成时间 最晚完成时间 总时差 A 3 - 0 0 3 3 0 B 2 A 3 3 5 5 0 C 4 A 3 3 7 7 0 D 2 B 5 5 7 7 0 E 3 C 7 7 10 10 0 F 1 D 7 7 8 8 0 G 2 E,F 10 10 12 12 0 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值