Skala logarytmiczna na osi X z konkretnymi wartościami.

0

Cześć!

Wyświetlam spektrum na podstawie sygnału z mikrofonu.
Walczę teraz z osią X, by na tej osi były wypisane częstotliwości nut.

Udało mi się wcisnąć konkretne wartości na oś (innego sposobu nie znalazłem :( )

    CategoryAxis {
        id: axisX
        min: 100
        max: 1000
        CategoryRange { endValue: 196.0; label: "196.0"; }
        CategoryRange { endValue: 207.7; label: "207.7"; }
        CategoryRange { endValue: 220.0; label: "220.0"; }
        CategoryRange { endValue: 233.1; label: "233.1"; }
        CategoryRange { endValue: 246.9; label: "246.9"; }
        CategoryRange { endValue: 261.6; label: "261.6"; }
        CategoryRange { endValue: 277.2; label: "277.2"; }
        CategoryRange { endValue: 293.7; label: "293.7"; }
        CategoryRange { endValue: 311.1; label: "311.1"; }
        CategoryRange { endValue: 329.6; label: "329.6"; }
        CategoryRange { endValue: 349.2; label: "349.2"; }
        CategoryRange { endValue: 370.0; label: "370.0"; }
        CategoryRange { endValue: 392.0; label: "392.0"; }
        CategoryRange { endValue: 415.3; label: "415.3"; }
        CategoryRange { endValue: 440.0; label: "440.0"; }
        CategoryRange { endValue: 466.2; label: "466.2"; }
        CategoryRange { endValue: 493.9; label: "493.9"; }
        CategoryRange { endValue: 523.3; label: "523.3"; }
        CategoryRange { endValue: 554.4; label: "554.4"; }
        CategoryRange { endValue: 587.3; label: "587.3"; }
        CategoryRange { endValue: 622.3; label: "622.3"; }
        CategoryRange { endValue: 659.3; label: "659.3"; }
        CategoryRange { endValue: 698.5; label: "698.5"; }
        CategoryRange { endValue: 740.0; label: "740.0"; }
        CategoryRange { endValue: 784.0; label: "784.0"; }
        CategoryRange { endValue: 830.6; label: "830.6"; }
        CategoryRange { endValue: 880.0; label: "880.0"; }
        CategoryRange { endValue: 932.3; label: "932.3"; }
        CategoryRange { endValue: 987.8; label: "987.8"; }
    }

Niestety potrzebowałbym też, żeby oś była wyświetlana w skali logarytmicznej, ponieważ otrzymuję coś takiego (obcięte z prawej strony, żeby na forum się zmieściło :) ):
nolog.png
Jak widać, biednie to wygląda...

Pytanie:
Jak zrobić oś X logarytmiczną z zdefiniowanymi wartościami na tej właśnie osi?

Korzystam z ChartView, który od pewnego czasu jest już dostępny za free, oraz cały wygląd jest napisany w QML'u.

Poratujcie :(

0

Mam jakieś rozwiązanie.

Przerobiłem częstotliwość na "numer" nuty:
double n = log2(freq/440) * 12;

I zastosowałem CategoryAxis z wyśrodkowanymi pod kreskami labelami.

    CategoryAxis {
        id: axisX
        min: -14
        max: 14
        labelsPosition: CategoryAxis.AxisLabelsPositionOnValue
        CategoryRange { endValue: -14; label: "196"; }
        CategoryRange { endValue: -13; label: "207.7"; }
        CategoryRange { endValue: -12; label: "220"; }
        CategoryRange { endValue: -11; label: "233.1"; }
        CategoryRange { endValue: -10; label: "246.9"; }
        CategoryRange { endValue: -9; label: "261.6"; }
        CategoryRange { endValue: -8; label: "277.2"; }
        CategoryRange { endValue: -7; label: "293.7"; }
        CategoryRange { endValue: -6; label: "311.1"; }
        CategoryRange { endValue: -5; label: "329.6"; }
        CategoryRange { endValue: -4; label: "349.2"; }
        CategoryRange { endValue: -3; label: "370"; }
        CategoryRange { endValue: -2; label: "392"; }
        CategoryRange { endValue: -1; label: "415.3"; }
        CategoryRange { endValue: 0; label: "440"; }
        CategoryRange { endValue: 1; label: "466.2"; }
        CategoryRange { endValue: 2; label: "493.9"; }
        CategoryRange { endValue: 3; label: "523.3"; }
        CategoryRange { endValue: 4; label: "554.4"; }
        CategoryRange { endValue: 5; label: "587.3"; }
        CategoryRange { endValue: 6; label: "622.3"; }
        CategoryRange { endValue: 7; label: "659.3"; }
        CategoryRange { endValue: 8; label: "698.5"; }
        CategoryRange { endValue: 9; label: "740"; }
        CategoryRange { endValue: 10; label: "784"; }
        CategoryRange { endValue: 11; label: "830.6"; }
        CategoryRange { endValue: 12; label: "880"; }
        CategoryRange { endValue: 13; label: "932.3"; }
        CategoryRange { endValue: 14; label: "987.8"; }
    }

log.png

1 użytkowników online, w tym zalogowanych: 0, gości: 1