IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

2D Java Discussion :

[JFreeChart] XYBarRenderer et espace entre les bar


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Rizzen
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 115
    Par défaut [JFreeChart] XYBarRenderer et espace entre les bar
    Bonjours

    J'ai un petit souci. Je suis passé à une version plus récente de JFreechart pour un nouveau projet. Avant j'arrivais sans problème à créer un graphique en bar avec 0 espace entre chaque bar mais le même code à présent ne me donne plus satisfaction. Je vois apparaitre une ombre de chaque bar que j'ai réussi à retirer mais il y a un grand espace entre mes bar et elles sont très très fine.

    Je suis à la recherche d'une solution pour supprimer les espaces entre les bars

    Merci d'avance

    Avant :



    Maintenant :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    package com.xxx.xxxxxxxxxx.util;
     
    import java.text.SimpleDateFormat;
    import java.util.GregorianCalendar;
    import java.util.Iterator;
    import java.util.LinkedList;
     
    import org.apache.log4j.Logger;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.axis.DateAxis;
    import org.jfree.chart.axis.NumberAxis;
    import org.jfree.chart.labels.StandardXYItemLabelGenerator;
    import org.jfree.chart.labels.StandardXYToolTipGenerator;
    import org.jfree.chart.labels.XYItemLabelGenerator;
    import org.jfree.chart.plot.XYPlot;
    import org.jfree.chart.renderer.xy.AbstractXYItemRenderer;
    import org.jfree.chart.renderer.xy.StandardXYItemRenderer;
    import org.jfree.chart.renderer.xy.XYBarRenderer;
    import org.jfree.data.general.Dataset;
    import org.jfree.data.general.Series;
    import org.jfree.data.time.SimpleTimePeriod;
    import org.jfree.data.time.TimePeriod;
    import org.jfree.data.time.TimePeriodValue;
    import org.jfree.data.time.TimePeriodValues;
    import org.jfree.data.time.TimePeriodValuesCollection;
    import org.jfree.data.xy.DefaultTableXYDataset;
    import org.jfree.data.xy.XYDataset;
    import org.jfree.data.xy.XYSeries;
     
    import com.xxxx.xxxxxxxxxx.dto.StatsDTO;
     
    /**
     * class used to be create chart and generate picture 
     * @author xxxxxxxxx xxxxxxxxxx
     * @version 1
     * 
     */
    public class SimpleChart {
    	private static Logger logger = Logger.getLogger("com.atos.wkexploit");
     
    	//Default value
    	private static boolean AUTOSORT = true;
    	private static boolean ALLOWDUPLICATEXVALUES= false;
    	private static String LBLDATEAXIS = "Date";
    	private static String LBLVALUEAXIS = "Number";
    	private static String DATEFORMAT = "dd/MM";
    	private boolean legend = false;
     
    	//Attributs
    	private Dataset dataset = null;
    	private Integer type = null; 
     
    	/**
         * Create a dataset about the type of chart
         * @since 1
         * @param type
         */
    	public SimpleChart(Integer _type) {
    		super();
    		logger.debug("SimpleChart : constructor");
    		this.type = _type;
     
    		switch(type.intValue()){
    			case 1:
    			case 3:
    				logger.debug("SimpleChart : line chart");
    				dataset = new DefaultTableXYDataset();
    				break;
    			case 2:
    				logger.debug("SimpleChart : bar chart");
    				dataset = new TimePeriodValuesCollection();
    				break;
    		}
    	}
     
    	/**
         * Method to initialize the dataset with all value in LinkedList 
         * @since 1
         * @param LinkedList<LinkedList<ListStatsChart>>
         */
    	public void initDataset(LinkedList lkllklstats){
    		logger.debug("SimpleChart.initDataset() : Begin");
    		Series series = null;
     
    		Iterator iter = lkllklstats.iterator();
    		while (iter.hasNext()){
    			LinkedList lklstats = (LinkedList)iter.next();
     
    			if(lklstats.size() > 1){
    				logger.debug("SimpleChart.initDataset() : legend actived");
    				legend = true;
    			}
    			Iterator it = lklstats.iterator();
     
    			while (it.hasNext()){
    				ListStatsChart lsc = (ListStatsChart)it.next();
     
    				switch(type.intValue()){
    				case 1:
    				case 3:
    					logger.debug("SimpleChart.initDataset() : line chart");
    					series = new XYSeries(lsc.getKey(), AUTOSORT, ALLOWDUPLICATEXVALUES);
    					break;
    				case 2:
    					logger.debug("SimpleChart.initDataset() : bar chart");				
    					series = new TimePeriodValues(lsc.getKey().toString());
    					break;
    				}
    				StatsDTO stt = null;
     
    				logger.debug("SimpleChart.initDataset() : init Series : BEGIN");
    				Iterator itsStats =  lsc.getListStat().iterator();
    				while (itsStats.hasNext()) {
    					try {
    						stt = (StatsDTO)itsStats.next();
     
    						switch(type.intValue()){
    						case 1:
    							logger.debug("SimpleChart.initDataset() : line chart : date : " + stt.getSttDate() + " value : " + stt.getSttValue());
    							((XYSeries)series).add(stt.getSttDate().getTime(), Double.parseDouble(stt.getSttValue()));
    							break;
    						case 2:
    							logger.debug("SimpleChart.initDataset() : Bar chart : date : " + stt.getSttTime() + " value : " + stt.getSttValue());			
    							GregorianCalendar gcTmpBegin = new GregorianCalendar();
    							GregorianCalendar gcTmpEnd = new GregorianCalendar();
     
    							gcTmpBegin.setTime(stt.getSttTime());
    							gcTmpBegin.set(GregorianCalendar.SECOND, 0);
     
    							gcTmpEnd.setTime(stt.getSttTime());
    							gcTmpEnd.add(GregorianCalendar.MINUTE, 9);
    							gcTmpEnd.set(GregorianCalendar.SECOND, 59);
     
    							TimePeriod period = new SimpleTimePeriod(gcTmpEnd.getTime(), gcTmpEnd.getTime());
    					        TimePeriodValue item = new TimePeriodValue(period, Double.parseDouble(stt.getSttValue()));
     
    					        ((TimePeriodValues)series).add(item);
    					        break;
    						case 3:
    							logger.debug("SimpleChart.initDataset() : line chart 3 : date : " + stt.getSttTime() + " value : " + stt.getSttValue());
    							((XYSeries)series).add(stt.getSttTime().getTime(), Double.parseDouble(stt.getSttValue()));
    							break;
    						}			        
    					} catch (Exception e) {
    						logger.error(StackTraceUtil.getInstance().getStackTrace(e));
    					}
    				}
    				logger.debug("SimpleChart.initDataset() : init Series : END");
     
    				try {
    					switch(type.intValue()){
    					case 1:
    					case 3:
    						logger.debug("SimpleChart.initDataset() : addSeries : " + type);
    						((DefaultTableXYDataset)dataset).addSeries((XYSeries)series); 
    						break;
    					case 2:
    						logger.debug("SimpleChart.initDataset() : addSeries : " + type);
    						((TimePeriodValuesCollection)dataset).addSeries((TimePeriodValues)series);
    						break;
    					}
    				} catch (Exception e){
    					logger.error(StackTraceUtil.getInstance().getStackTrace(e));
    				}
    			}
    		}
    		logger.debug("SimpleChart.initDataset() : end");
    	}
     
    	/**
         * Method to create chart
         * @since 1
         * @param labelDateAxis
         * @param dateFormat
         * @param labelNumberAxis
         * @return JFreeChart
         */
    	public JFreeChart createChart(String labelDateAxis, String dateFormat, String labelNumberAxis ){
    		logger.debug("SimpleChart.createChart() : Begin");
    		if(labelDateAxis == null || labelDateAxis.trim().equals("")){
    			labelDateAxis = LBLDATEAXIS;
    		}
    		if(dateFormat == null || dateFormat.trim().equals("")){
    			dateFormat = DATEFORMAT;
    		}
    		if(labelNumberAxis == null || labelNumberAxis.trim().equals("")){
    			labelNumberAxis = LBLVALUEAXIS;
    		}
     
    		// -- Create date axis
    		DateAxis timeAxis = new DateAxis(labelDateAxis);
    		timeAxis.setDateFormatOverride(new SimpleDateFormat(dateFormat));
     
    		// -- Create number axis
    		NumberAxis valueAxis = new NumberAxis(labelNumberAxis);
    		valueAxis.setAutoRangeIncludesZero(false);
     
    		AbstractXYItemRenderer renderer = null;
    		XYPlot plot = null;
     
    		switch(this.type.intValue()){
    			case 1:
    			case 3:			
    				// -- configure renderer
    				renderer = new StandardXYItemRenderer(StandardXYItemRenderer.LINES + StandardXYItemRenderer.SHAPES);
    				((StandardXYItemRenderer)renderer).setBaseShapesFilled(true);
     
    				XYItemLabelGenerator generator = new StandardXYItemLabelGenerator();
    				renderer.setBaseItemLabelGenerator(generator);
    				renderer.setBaseToolTipGenerator(StandardXYToolTipGenerator.getTimeSeriesInstance());
     
    				// -- Create plot ...
    				plot = new XYPlot((XYDataset) this.dataset, timeAxis, valueAxis, renderer);
    				break;
    			case 2:
    				renderer = new XYBarRenderer(0.0);
    				((XYBarRenderer)renderer).setShadowVisible(false);
     
     
    				// -- Create plot ...
    				plot = new XYPlot((TimePeriodValuesCollection)dataset, timeAxis, valueAxis, renderer);
    			    plot.getDomainAxis().setLowerMargin(0.0);
    			    plot.getDomainAxis().setUpperMargin(0.0);
    				break;
    		}
    		// -- ... and finally chart
    		JFreeChart chart = new JFreeChart("", JFreeChart.DEFAULT_TITLE_FONT, plot, legend);
     
    		 // -- Configure chart
    		chart.setBackgroundPaint(java.awt.Color.white);
     
    		logger.debug("SimpleChart.createChart() : End");
    		return chart;
    	}
    }
    Par rapport au code c'est un graphique de type 2 pour avoir le barchart

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 8
    Par défaut
    Bonjour,

    Je pense le problem est ici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TimePeriod period = new SimpleTimePeriod(gcTmpEnd.getTime(), gcTmpEnd.getTime());
    Vous avez utilisé 'gcTmpEnd' deux fois, mais le premier doit etre gcTmpStart.

    David Gilbert
    http://www.jfree.org/

  3. #3
    Membre confirmé Avatar de Rizzen
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 115
    Par défaut
    OO je devait-être fatigué je teste ça merci beaucoup. Comme quoi des fois on manque de recule c'est hallucinant.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 8
    Par défaut
    Bonjour,

    J'ai un problème avec la nouvelle version de JfreeChart. J'ai une ombre dans mon barchart et une ligne blanche. Comment as-tu enlevé l'ombre? Et comment je pourrai enlever la ligne blanche aussi? merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/03/2008, 16h23
  2. pb d'espacement entre les frames
    Par skayro dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 26/04/2005, 11h11
  3. Elever l'espace entre les cellules
    Par bdaboah dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 20/04/2005, 14h12
  4. Espacement entre les ligne d'un tableau
    Par Flobel dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 02/11/2004, 09h33
  5. Espace entre les miliers ex : 12 000
    Par Tchenouleur dans le forum Bases de données
    Réponses: 4
    Dernier message: 04/06/2004, 10h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo