Kısa bir süre önce JFreeChart kullanmaya başladım ve yapmak istediğim bir şey var ama mümkün olup olmadığından emin değilim. Programımın bir wav dosyasından bir spektrogram (bir ses grafiği) çizmesi gerekiyor. Bu yüzden, wav dosyasımdaki verileri çift bir arraylistte almayı ve bir grafikte göstermeyi başardım. Ama şimdi, yakınlaştırma olmadan ve yalnızca sesimdeki seçili parçayı çalabilmek için spektrogramımın bir alanını (yakınlaştırma için kullanılan aynı araçla) seçebiliyorum. Ama başarılı olmak için hiçbir yol bulamıyorum.JFreeChart yakınlaştırmadan bir bölge seçin
package classes;
import java.awt.Color;
import java.awt.Paint;
import java.awt.Rectangle;
import java.io.File;
import java.io.IOException;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.Plot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.RectangleInsets;
public class Chart{
JFreeChart chart;
Plot plot;
//Constructeur de la classe Chart
public Chart(double[][] bs, int channel, int framesLength, float frameRate)
{
// Création d'un XY chart
XYSeries series = new XYSeries("XYGraph");
int i=0,j=0;
float k=0;
//Ajout de tous les points du tableau de 16 bytes dans le chart
for(i=0; i <channel;i++)
{
for(j=0; j< framesLength;j++)
{
//Division des valeurs par 2^15 pour être entre 1 et -1
series.add(k, (bs[i][j]/32768));
//Echelle de X
k+=(1/frameRate);
}
}
// Ajoute la série au dataset
XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(series);
// Génération du graphe
chart = ChartFactory.createXYLineChart(
"Ajouter titre à la fonction de génération", // Titre
"Temps (s)", // Nom de l'axe X
"y-axis", // Nom de l'axe Y
dataset, // Dataset
PlotOrientation.VERTICAL, // Plot Orientation
true, // Show Legend
false, // Use tooltips
false // Configure chart to generate URLs?
);
plot= (XYPlot) chart.getPlot();
}
//Renvoie le chart
public JFreeChart getChart()
{
return chart;
}
public void color(Color c)
{
plot.setBackgroundPaint(c);
}
}
Ve burada ben Grafik sınıfını arayıp kullanıyorum:
Chart chartUn= new Chart(bs, channels , frameLength , frameRate);
chartUn.color(Color.pink);
vue.setChartPanelUn(new ChartPanel(chartUn.getChart(), false));
vue.getChartPanelUn().setRangeZoomable(false);
vue.getChartPanelUn().setMouseWheelEnabled(true);
vue.getChartPanelUn() Bir ChartPanel döndürür İşte benim grafiğin benim kodudur. Sorunumu nasıl çözebilirim? Çok teşekkürler (Ve üzgünüm ingilizcem her zaman kesin değilse: /)
Hızlı anwser için teşekkürler! Kodumla çalışıp çalışmadığını görmek için bu hafta sonu deneyeceğim – user2299206