Диаграмма аудиограммы WPF C # - PullRequest
0 голосов
/ 17 июня 2019

У меня проблема с графиком аудиограммы. Я пытался сделать диаграмму с библиотекой Oxyplot, но это не сработало. Есть ли какой-нибудь более простой способ сделать этот график?

Тогда я пытался сделать по-другому (см. Код ниже), но здесь у меня проблема с осями. У меня есть какой-то график, но я не знаю, как повернуть график и установить правильный размер осей.

int[] result_decibels_L = new int[] { dB_250_L, dB_500_L, dB_1000_L, dB_2000_L, dB_4000_L, };
int[] result_decibels_R = new int[] { dB_250_R, dB_500_R, dB_1000_R, dB_2000_R, dB_4000_R };

const int margin = 0;
int xmin = margin;
int xmax = (int)canGraph.Width - margin;
int ymin = margin;
int ymax = 120; //(int)canGraph.Height - margin;
const int step = 10;

// Make the X axis.
GeometryGroup xaxis_geom = new GeometryGroup();
xaxis_geom.Children.Add(new LineGeometry( new Point(0, ymax), new Point(canGraph.Width, ymax)));

for (double x = xmin + step; x <= canGraph.Width - step; x += step)
{
    xaxis_geom.Children.Add(new LineGeometry(
        new Point(x, ymax - margin / 2),
        new Point(x, ymax + margin / 2)));
}

Path xaxis_path = new Path();
xaxis_path.StrokeThickness = 1;
xaxis_path.Stroke = Brushes.Black;
xaxis_path.Data = xaxis_geom;

canGraph.Children.Add(xaxis_path);

// Make the Y ayis.
GeometryGroup yaxis_geom = new GeometryGroup();
yaxis_geom.Children.Add(new LineGeometry( new Point(xmin, 0), new Point(xmin, canGraph.Height)));

for (double y = step; y <= canGraph.Height - step; y += step)
{
    yaxis_geom.Children.Add(new LineGeometry(
        new Point(xmin - margin / 2, y),
        new Point(xmin + margin / 2, y)));
}

Path yaxis_path = new Path();
yaxis_path.StrokeThickness = 1;
yaxis_path.Stroke = Brushes.Black;
yaxis_path.Data = yaxis_geom;

canGraph.Children.Add(yaxis_path);

// Make some data sets.
Brush[] brushes = { Brushes.Red, Brushes.Green, Brushes.Blue };
Random rand = new Random();
for (int data_set = 0; data_set < 2; data_set++)
{
    int last_y = rand.Next((int)ymin, (int)ymax);

    PointCollection points = new PointCollection();
    for (int x = 0; x < 5; x++)
    {
       /* last_y = rand.Next(last_y - 10, last_y + 10);
        if (last_y < ymin) last_y = (int)ymin;
        if (last_y > ymax) last_y = (int)ymax;*/
        points.Add(new Point(tab_chart[x], result_decibels_L[x]));

    }

    Polyline polyline = new Polyline();
    polyline.StrokeThickness = 1;
    polyline.Stroke = brushes[data_set];
    polyline.Points = points;

    canGraph.Children.Add(polyline);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...