`
lihua-he
  • 浏览: 103018 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

折线图

阅读更多
public class FmjyfsReportAction extends ActionSupport{
private Map scoreMap = new HashMap();
public String report(){
List qushi = new ArrayList();
List a = new ArrayList();
a.add("过分干涉");   //这个表示节点    我有6个   所以应该有6个节点
a.add("1");   //这个有4个表示有4条线      我应该出2跳线  所以只能有2个
a.add("2");
List b = new ArrayList();
b.add("拒绝/否认");
b.add("5");
b.add("6");
List c = new ArrayList();
c.add("温暖/理解");
c.add("10");
c.add("6");
List d = new ArrayList();
d.add("鼓励/支持");
d.add("6");
d.add("1");
List e = new ArrayList();
e.add("惩罚/严厉");
e.add("9");
e.add("4");
List f = new ArrayList();
f.add("过度保护");
f.add("15");
f.add("10");
qushi.add(a);
qushi.add(b);
qushi.add(c);
qushi.add(d);
qushi.add(e);
qushi.add(f);
generateGraph(qushi);
generateGraph(list);
return SUCCESS;
}
private void generateGraph(List qushi) { //这里可以随便发挥,我现在是写的2条线
Map map = new HashMap();
if(qushi!=null && qushi.size()>0){
String key1 = "父亲";
String key2 = "母亲";
List father = new ArrayList();
List mother = new ArrayList();
for (int i = 0; i < qushi.size(); i++) {
List data = (List) qushi.get(i);
String batchId = (String) data.get(0);
Object[] obj1 = new Object[2];
obj1[0] = data.get(1);
obj1[1] = batchId;
father.add(obj1);  

obj1 = new Object[2];
obj1[0] = data.get(2);
obj1[1] = batchId;
mother.add(obj1);
}
map.put(key1, father);
map.put(key2, mother);
}
TrendGraphCommon t = new TrendGraphCommon();
t.setMap(map);
scoreMap.put("percentReport", t);

}
}
public class TrendGraphCommon implements DatasetProducer, ChartPostProcessor,
Serializable {
/**
* 要展示的数据
* Map<String, List<Object[]>>中String即为线条名称
* List<Object[]>中Object[]{数值,批次}
*/
private Map<String, List<Object[]>> map = null;

/**
* 是否自动生成纵坐标。true为自动生成
*/
private boolean autoTickUnit = true;

/**
* 如果不自动生成纵坐标则需指定纵坐标的间隔单位。
*/
private double tickUnit = 0;
/**
* 如果不自动生成纵坐标则需指定纵坐标的最小值。
*/
private double marginMin = 0;
/**
* 如果不自动生成纵坐标则需指定纵坐标的最大值。
*/
private double marginMax = 0;

/**
* 设置横坐标分类显示信息倾斜度
*/
private boolean tilt = false;

public Object produceDataset(Map arg0) throws DatasetProduceException {
if (map != null && map.size() == 0) {
map = new HashMap<String, List<Object[]>>();
}

DefaultCategoryDataset dataset = new DefaultCategoryDataset();
for (Map.Entry<String, List<Object[]>> entry : map.entrySet()) {
for (Object[] item : entry.getValue()) {
if (item[0] instanceof Integer) {
dataset.addValue(((Integer)item[0]).doubleValue(), entry
.getKey(), item[1].toString());
   } else if (item[0] instanceof String) {
   dataset.addValue(Double.parseDouble((String)item[0]), entry
.getKey(), item[1].toString());
   } else if (item[0] instanceof Double) {
   dataset.addValue((Double)item[0], entry
.getKey(), item[1].toString());
   } else if (item[0] instanceof Float) {
   dataset.addValue(((Float)item[0]).doubleValue(), entry
.getKey(), item[1].toString());
   } else if (item[0] instanceof Long) {
   dataset.addValue(((Long)item[0]).doubleValue(), entry
.getKey(), item[1].toString());
   } else if (item[0] instanceof Number) {
   dataset.addValue(((Number)item[0]).doubleValue(), entry
.getKey(), item[1].toString());
   }
}
}

return dataset;
}

/**
* 指定图形参数
*/
public void processChart(Object chart, Map arg1) {
CategoryPlot plot1 = (CategoryPlot) ((JFreeChart) chart).getPlot();
plot1.setNoDataMessage("暂时没有数据");
plot1.setBackgroundPaint(Color.lightGray);

plot1.setRangeGridlinePaint(Color.BLUE);
plot1.setRangeGridlinesVisible(true);

plot1.setDomainGridlinePaint(Color.BLUE);
plot1.setDomainGridlinesVisible(true);

NumberAxis numberaxis = (NumberAxis) plot1.getRangeAxis();
numberaxis.setUpperMargin(1);//设置数值离顶部的距离
if (!autoTickUnit) {
numberaxis.setAutoTickUnitSelection(autoTickUnit);

// 设置纵坐标值的间距为10
numberaxis.setTickUnit(new NumberTickUnit(tickUnit));

// 纵坐标值只能是0-100之间的值
numberaxis.setRangeWithMargins(marginMin, marginMax);

}

if (tilt) {
CategoryAxis domainAxis = plot1.getDomainAxis();
domainAxis.setCategoryLabelPositions(CategoryLabelPositions
.createUpRotationLabelPositions(Math.PI / 3.0));// 设置横坐标分类显示信息倾斜度
}

        LineAndShapeRenderer renderer = (LineAndShapeRenderer)plot1.getRenderer();
        DecimalFormat decimalformat1 = new DecimalFormat("##.##");//数据点显示数据值的格式
        renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator("{2}", decimalformat1));
                                          //上面这句是设置数据项标签的生成器
        renderer.setItemLabelsVisible(true);//设置项标签显示
        renderer.setBaseItemLabelsVisible(true);//基本项标签显示
                 //上面这几句就决定了数据点按照设定的格式显示数据值 
        renderer.setShapesFilled(Boolean.TRUE);//在数据点显示实心的小图标
        renderer.setShapesVisible(true);//设置显示小图标
}
//省略了set,get方法
}
//jsp
<ul class="list_pad">
    <li>
    <c:set var="xyCoure2" value="${scoreMap['percentReport']}" /> <cewolf:chart id="XYline" type="line">
          <cewolf:gradientpaint>
            <cewolf:point x="1" y="1" color="#ffffff" />
            <cewolf:point x="1" y="300" color="#ffffff" />
          </cewolf:gradientpaint>
          <cewolf:data>
            <cewolf:producer id="xyCoure2" />
            <cewolf:chartpostprocessor id="xyCoure2">
              <cewolf:param name="0" value='<%= "#FFFddF"%>' />
              <cewolf:param name="1" value='<%= "#FF0000"%>' />
              <cewolf:param name="2" value='<%= "#00FF00"%>' />
              <cewolf:param name="3" value='<%= "#0000FF"%>' />
              <cewolf:param name="4" value='<%= "#F00000"%>' />
              <cewolf:param name="5" value='<%= "#00F000"%>' />
              <cewolf:param name="6" value='<%= "#000F00"%>' />
              <cewolf:param name="7" value='<%= "#FFFFFF"%>' />
            </cewolf:chartpostprocessor>
          </cewolf:data>
        </cewolf:chart>
        <cewolf:img chartid="XYline" renderer="/cewolf" width="600" height="200" />
      </li>
    </ul>
//可以先用这个静态的折现图试试看  嘻嘻
分享到:
评论

相关推荐

    C#绘制折线图

    C#绘制折线图 折线图是一种常用的数据可视化方法,用于展示数据的趋势和变化。C#提供了多种绘制折线图的方法,包括使用 Graphics 类、Bitmap 类和 Pen 类等。在本文中,我们将介绍如何使用 C# 绘制折线图,包括绘制...

    EasyUI表格合并,及echarts折线图,导出折线图为图片

    接着,"Echarts折线图"部分则涵盖了如何使用Echarts库创建动态、交互式的折线图。Echarts提供了一系列参数供开发者配置,如`series`定义数据序列,`xAxis`和`yAxis`定义坐标轴,`tooltip`定义提示框等。通过灵活调整...

    PB自定义折线图

    在PB中,自定义折线图是一项关键功能,它允许开发者根据特定需求创建具有个性化特性的图表,以便更好地可视化数据。本文将深入探讨PB自定义折线图的相关知识点,并通过分析"Graph2"这个文件来提供具体的实践指导。 ...

    js实现折线图

    在JavaScript(js)中实现折线图是一种常见的数据可视化需求,尤其在网页开发中,用于展示动态或静态的数据。折线图能够清晰地展现数据的变化趋势,帮助用户理解和分析数据。下面将详细介绍如何使用JavaScript来创建...

    MPAndroidChart折线图Demo

    MPAndroidChart是一款强大的开源库,用于在Android平台上创建各种图表,包括折线图、柱状图、饼图等。这个"MPAndroidChart折线图Demo"是开发者分享的一个实例,帮助我们了解如何在Android应用中集成和使用...

    java折线图绘制程序

    在Java编程环境中,绘制折线图是一项常见的任务,特别是在数据分析、可视化或教学示例中。这个"java折线图绘制程序"是专为这个目的设计的,它允许开发者和用户轻松地创建和显示折线图,以便更好地理解和解释数据。 ...

    折线图的实现

    在数据分析和可视化领域,折线图是一种非常常见且实用的图表类型,用于展示数据随时间变化的趋势或比较多个变量的变化情况。本主题将深入探讨如何实现一个简单的折线图,并探讨其可扩展性。 首先,我们需要理解折线...

    折线图_折线图_

    在数据分析和可视化领域,折线图是一种非常常见且强大的工具,尤其在展示数据随时间变化的趋势时尤为适用。本文将针对R语言的新手和小白,详细介绍如何使用R语言绘制出美观且具有信息量的折线图。 首先,我们需要...

    JSP利用JFreeChart生成折线图

    在Java Web开发中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,而JFreeChart则是一个强大的Java图表库,能够帮助开发者生成各种复杂的图表,包括折线图。本教程将详细介绍如何在JSP中利用JFreeChart库来...

    Android折线图多条数据实时动态更新,控制折线图上数据的精度

    MPAndroidChart是一个强大的开源库,它允许开发者轻松地创建各种图表,包括折线图。本篇将深入探讨如何利用MPAndroidChart实现多条数据的实时动态更新,并控制折线图上数据的精度。 首先,我们需要了解...

    android自定义折线图曲线图

    在Android开发中,自定义视图是实现特定图形或交互效果的重要手段,而自定义折线图和曲线图则是数据可视化中的常见需求。本篇将深入探讨如何在Android环境中实现这两种图表。 首先,我们需要理解折线图和曲线图的...

    Winform绘制折线图

    在Winform应用中,有时我们需要展示数据,其中一种常见的方式就是通过图表,比如折线图。折线图能直观地表示数值随时间或某个连续变量的变化趋势。本示例将探讨如何在Winform应用中实现自定义的折线图绘制。 首先,...

    asp生成折线图源码

    在ASP中生成折线图是常见的数据可视化需求,这通常涉及到JavaScript图表库或者服务器端组件的使用。下面将详细探讨如何在ASP中实现折线图的生成。 一、原理介绍 ASP生成折线图的基本流程通常是:在服务器端处理数据...

    可滑动可点击的折线图

    在IT行业中,数据可视化是数据分析和展示的重要环节,而折线图作为一种常见且直观的数据图表类型,被广泛应用于各种场景,如经济走势分析、趋势预测、项目进度追踪等。"可滑动可点击的折线图"是一个特殊的设计,它...

    swing中使用jfreenchart绘制柱状图,折线图,折线图中可动态添加线

    在Java的Swing环境中,JFreeChart库是一个强大的工具,用于创建各种图表,包括柱状图、折线图等。本教程将详细讲解如何利用JFreeChart在Swing应用程序中实现这些功能,以及如何在折线图中动态添加线。 首先,确保你...

    Android studio实现折线图

    在Android开发中,折线图是一种常见的数据可视化方式,它能直观地展示数据的变化趋势。本文将详细讲解如何使用Android Studio来实现一个折线图。 首先,你需要选择一个图形库来帮助绘制折线图。在Android社区中,有...

    VS2008环境下Teechart绘制折线图柱状图

    VS2008环境下Teechart绘制折线图柱状图 TeeChart是业界知名的数据可视化控件,它可以帮助开发者快速创建各种类型的图表,例如折线图、柱状图、三维图等。在VS2008环境下使用TeeChart绘制折线图柱状图需要按照以下...

    jq报表折线图

    "jq报表折线图"这个功能模块显然聚焦于利用jQuery(jq)库来实现动态和交互式的报表,特别是折线图这一图表类型。以下是关于这个主题的详细解释: **jQuery(jq)库** jQuery是一个轻量级的JavaScript库,它简化了...

    VB6绘制动态折线图(含源码)

    在VB6(Visual Basic 6)编程环境中,创建动态折线图是一项常见的需求,尤其是在数据分析、可视化和实时数据展示的应用中。本项目提供的"VB6动态折线图"源码,可以帮助开发者快速实现这一功能,它包含有以下关键知识...

Global site tag (gtag.js) - Google Analytics