Как определить соотношение сторон текста в libplot? - PullRequest
0 голосов
/ 12 февраля 2020

Я использую libplot для вывода некоторых данных из программы C. Мой график имеет очень разные пользовательские координаты Y и X. Для оси X я использую диапазон около 5000 точек, а для оси Y я использую диапазон всего 0,2.

Это пример кода, который показывает, что если оси X и Y имеют разные отношения чем 1: 1, текст отображается неправильно.

int examplePlot(void) {

    plPlotter *plotter;
    plPlotterParams *plotter_params;

    /* SET PARAMETERS */
    plotter_params = pl_newplparams ();
    pl_setplparam (plotter_params, "PAGESIZE", "a4");

    /* CREATE AN X PLOTTER */
    if ((plotter = pl_newpl_r ("X", NULL, NULL, NULL, plotter_params)) == NULL) {
        fprintf (stderr, "Couldn't create Plotter\n");
        exit(1);
    }  

    /* OPEN PLOTTER */
    if (pl_openpl_r (plotter) < 0) {
        fprintf (stderr, "Couldn't open Plotter\n");
        exit(1);

    }

    pl_fspace_r (plotter, 0.0, 0.0, 8.0, 1.0); /* set coor system */
    pl_flinewidth_r (plotter, 0.01);    /* set line thickness */
    pl_pencolorname_r (plotter, "red"); /* use red pen */
    pl_erase_r (plotter);               /* erase graphics display */
    pl_fbox_r(plotter, 0.01, 0.01, 0.98, 0.98);
    pl_ffontsize_r (plotter, 0.5);        /* font size = 0.5in = 36pt */
    pl_fmove_r (plotter, 4.0, 0.5); /* position the graphics cursor */
    pl_alabel_r(plotter, 'l', 'c', (const char *)"ABC");

    /* CLOSE PLOTTER */
    if (pl_closepl_r (plotter) < 0) {
        fprintf (stderr, "Couldn't close Plotter\n");
        exit(1);
    }

    /* DELETE PLOTTER */
    if (pl_deletepl_r (plotter) < 0) {
        fprintf (stderr, "Couldn't delete Plotter\n");
        exit(1);
      }

}

В выводе показано, как текст имеет отношение высоты / ширины 8: 1. Как получить стандартное соотношение 1: 1 для любых пользовательских координат X / Y?

enter image description here

...