Używam klas geometrii .net WPF do wykresu przebiegów. Używałem przekształceń macierzowych do konwersji z przestrzeni współrzędnych ekranu na moją współrzędną przestrzeni dla przebiegu. Wszystko działa wspaniale i bardzo łatwo jest śledzić moje okno i skalowanie itp. Potrafię nawet użyć transformacji odwrotnej do obliczenia pozycji myszy w kategoriach przestrzeni współrzędnych. Używam wbudowanych klas Skalowanie i tłumaczenie, a następnie niestandardowej macierzy do odwracania osi Y (nie ma matrycy prefabrykowanej do przewracania). Chcę być w stanie wykreślić te przebiegi również w skali logarytmicznej (oś x lub oś y lub obie), ale nie jestem pewien, czy jest to nawet możliwe z transformacją macierzy. Czy ktoś wie, czy to możliwe, a jeśli tak, to jaka jest matryca?Czy istnieje macierz transformacji, która może skalować logarytmicznie oś X i/lub Y?
5
A
Odpowiedz
2
Macierze są transformacjami liniowymi, więc można je skalować, obracać itd. Nie można jednak rozciągać logarytmicznie. To nieliniowa transformacja.
EDYCJA: Ale powinieneś być w stanie wykonać to samodzielnie, bez zbędnych kłopotów. (Nie wymaga znajomości lin.) Chodzi mi o to, że jeśli chcesz, aby oś x była na skali logarytmicznej, weź logi współrzędnych x, które są wykresami. Najtrudniejszą częścią jest sprawienie, by legenda skali działała po stronie wykresu - sprowadza się to do transformacji każdej wartości skali od x do 10^x (lub jakiejkolwiek bazy logarytmu, której używasz).
Tak więc legenda czytaj:
1 10 100 1000
zamiast
1 2 3 4
0
Cóż, wyraźnie matryca byłaby to:
(log(x)/x 0 ) (x) = (log(x))
( 0 log(y)/y) (y) = (log(y))
Ale to oczywiście nie jest użyteczne. Nie można zapisać stałej macierzy do transformacji nieliniowej.
Powiązane problemy
- 1. Jak skalować oś Y Seaborn za pomocą wykresu słupkowego?
- 2. uzyskiwanie x, y, z, średnia przez macierz danych 3D
- 3. Jak skalować osie x i y w mayavi2?
- 4. Czy GCC może zoptymalizować isnan (x) || isnan (y) do isunordered (x, y)?
- 5. matplotlib: ustawić oś napięty tylko do osi x lub y
- 6. x, y = getPos() vs. (x, y) = getPos()
- 7. Obraz tła rozciągaj tylko oś y, powtarzaj-x
- 8. MPAndroidChart: dolna oś x i wielokrotne y-osie
- 9. Nakładanie oś y etykieta kleszcz i oś x etykieta kleszcz w matplotlib
- 10. Jak wyrównać oś X na Y = 0 w R?
- 11. R: grupy stat_smooth (oś x)
- 12. Dziwactwo rubowe: x == y && [x, y] .uniq == [x, y]
- 13. Zaktualizuj oś y wykresu obszaru szczotkowanego
- 14. Chartjs animacja oś x
- 15. Uzyskaj macierz rotacji między dwiema macierzami transformacji (XNA)
- 16. Wyświetl oś y jako wartości procentowe?
- 17. Czy istnieje biblioteka Java, która może "zmienić" dwa obiekty?
- 18. Dlaczego argumenty atan2 Y, X zamiast X, Y?
- 19. x Oś i oś osi etykiety w pheatmap w R
- 20. Zedgraph oś X skalowanie wartości
- 21. Oś Y w pasku słupkowym MATLAB jest ukryta
- 22. Jak ustawić oś y w radianach na wykresie Pythona?
- 23. Czy istnieje bardziej elegancki sposób obliczania x = (y/n) + (y% n? 1: 0)?
- 24. Czy jest zagwarantowane, że typ T [x] [y] ma taki sam układ pamięci co T [x * y] w C?
- 25. Narzędzia wykresów Google obcinania oś y etykiet
- 26. gnuplot, przerwa oś y na dwie części
- 27. PHP Array.length dla dwuwymiarowej tablicy (oś Y)
- 28. Czy istnieje parametr w matplotlib/pandas, który ma oś Y histogramu w procentach?
- 29. Czy istnieje blokada fizyczna, która może wykazywać asymetryczne zasady crytograficzne?
- 30. Highcharts: Oś X i Y krzyżują się na zero na wykresie rozproszenia
Bardzo wiele. –
dziękuję, tak, myślę, że tak być może, może istnieje sposób, aby stworzyć własną implementację klasy Transform, aby robić rzeczy nieliniowe? Klasa abstrakcyjna bazująca na Przekształceniu nadal wydaje się wykorzystywać macierz, i jest to prawdopodobnie konieczne do wykonywania złożonych transformacji, więc może to również nie jest możliwe. Chyba będę musiał sam wykonać skalowanie logów. Bummer. –
To było zbyt długo, odkąd wziąłem liniową algebrę –