J'ai besoin de dessiner des boucles d'hystérésis, puis de calculer la zone fermée dans la boucle. J'utilise jFreeChart.Tracé d'une boucle d'hystérésis avec jFreeChart
considèrent les données suivantes:
hyst[0]=0;
hyst[1]=0;
hyst[2]=0.0098;
hyst[3]=0.0196;
hyst[4]=0.0489;
hyst[5]=0.0879;
hyst[6]=0.0684;
hyst[7]=0.0489;
hyst[8]=0.0196;
hyst[9]=0.0098;
hyst[10]=0;
hyst[11]=0;
hyst[12]=0;
hyst[13]=0;
hyst[14]=0;
hyst[15]=-0.0195;
hyst[16]=-0.0488;
hyst[17]=-0.0391;
hyst[18]=-0.0195;
hyst[19]=0;
hyst[20]=0;
Lorsque je tente:
public void plotHysteresis()
{
int j=0;
int i=0;
XYSeries series1 = new XYSeries("Before Treatment");
// DefaultCategoryDataset series1 = new DefaultCategoryDataset();
for(i=0;i<6;i++)
{
series1.add(j,hyst[i]);
logTextArea.append(Integer.toString(j) +" : " +Double.toString(hyst[i])+"\n");
j=j+5;
}
j=j-5;
for(;i<11;i++)
{
j=j-5;
series1.add(j,hyst[i]);
logTextArea.append(Integer.toString(j) +" : " +Double.toString(hyst[i])+"\n");
}
for(;i<16;i++)
{
j=j-5;
series1.add(j,hyst[i]);
logTextArea.append(Integer.toString(j) +" : " +Double.toString(hyst[i])+"\n");
}
for(;i<21;i++)
{
j=j+5;
series1.add(j,hyst[i]);
logTextArea.append(Integer.toString(j) +" : " +Double.toString(hyst[i])+"\n");
}
XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(series1);
JFreeChart chart = ChartFactory.createXYAreaChart(
"Hysteresis Plot", // chart title
"Pounds (lb)", // x axis label
"Distance (inches)", // y axis label
dataset, // data
PlotOrientation.VERTICAL,
true, // include legend
true, // tooltips
false // urls
);
chart.setBackgroundPaint(Color.white);
ChartPanel frame = new ChartPanel(chart);
frame.setVisible(true);
frame.setSize(plotPanel.getWidth(),plotPanel.getHeight());
plotPanel.add(frame);
plotPanel.repaint();
}
Il me donne ci-dessous résultat:
Si j'utilise:
JFreeChart chart = ChartFactory.createXYLineChart(
"Hysteresis Plot", // chart title
"Pounds (lb)", // x axis label
"Distance (inches)", // y axis label
dataset, // data
PlotOrientation.VERTICAL,
true, // include legend
true, // tooltips
false // urls
);
I donne:
je besoin d'une parcelle d'hystérésis qui ressemble à:
Je pense que la différence est la façon dont les points sont reliés. S'il vous plaît guider comment obtenir la boucle d'hystérésis souhaitée avec jFreeChart, puis comment calculer la zone ci-jointe.
Merci
Vous pouvez tracer deux lignes XYLine: une pour la ligne supérieure et une pour la ligne inférieure. – assylias
@assylias Y a-t-il une autre solution, au lieu d'utiliser deux lignes? J'ai besoin de tracer beaucoup de tels diagrammes d'hystérésis pour différentes lectures obtenues pour hyst [23] et j'ai besoin de les superposer sur le même graphe et de comparer les changements de zone inclus .. –
Quelques idées pour la zone sont mentionnées [ici] (http: // stackoverflow .com/q/14175685/230513). – trashgod