Jak ustawić współczynnik proporcji w matplotlib
Współczynnik proporcji wykresu Matplotlib odnosi się do aspektu skalowania osi, to znaczy stosunku jednostki y do jednostki x.
Ten współczynnik można modyfikować za pomocą funkcji matplotlib.axes.Axes.set_aspect() .
W skrócie funkcja set_aspect() faktycznie zmienia tak zwany układ współrzędnych danych , ale w praktyce zazwyczaj chcemy zmienić wyświetlany układ współrzędnych .
Aby ułatwić tę konwersję, możemy użyć tego fragmentu kodu:
#define y-unit to x-unit ratio ratio = 1.0 #get x and y limits x_left, x_right = ax. get_xlim () y_low, y_high = ax. get_ylim () #set aspect ratio ax. set_aspect ( abs ((x_right-x_left)/(y_low-y_high))*ratio)
Przeanalizujmy przykład wykorzystania tej funkcji w praktyce.
Krok 1: Utwórz podstawowy wykres Matplotlib
Najpierw utwórzmy prosty wykres liniowy za pomocą Matplotlib:
import matplotlib.pyplot as plt #define matplotlib figure and axis fig, ax = plt. subplots () #create simple line plot ax. plot ([0, 10],[0, 20]) #displayplot plt. show ()
Krok 2: Ustaw współczynnik proporcji (w niewłaściwy sposób)
Zauważ, że oś x jest dłuższa niż oś y. Spróbujmy ustawić współczynnik proporcji na 1, czyli oś x i oś y powinny być równe:
import matplotlib.pyplot as plt #define matplotlib figure and axis fig, ax = plt. subplots () #create simple line plot ax. plot ([0, 10],[0, 20]) #attempt to set aspect ratio to 1 ax. set_aspect (1) #displayplot plt. show ()
Należy pamiętać, że nie zadziałało to zgodnie z oczekiwaniami. Oś Y jest znacznie dłuższa niż oś X.
Krok 3: Ustaw proporcje (właściwy sposób)
Poniższy kod pokazuje, jak za pomocą prostego obliczenia ustawić prawidłowy współczynnik kształtu:
import matplotlib.pyplot as plt #define matplotlib figure and axis fig, ax = plt. subplots () #create simple line plot ax. plot ([0, 10],[0, 20]) #set aspect ratio to 1 ratio = 1.0 x_left, x_right = ax. get_xlim () y_low, y_high = ax. get_ylim () ax. set_aspect ( abs ((x_right-x_left)/(y_low-y_high))*ratio) #displayplot plt. show ()
Należy zauważyć, że ten wykres ma oczekiwany współczynnik proporcji. Oś x i oś y mają równą długość.
Krok 4: Dostosuj proporcje według własnego uznania
Jeśli chcemy, aby oś Y była dłuższa niż oś X, możemy po prostu określić, że współczynnik proporcji będzie liczbą większą niż 1:
import matplotlib.pyplot as plt #define matplotlib figure and axis fig, ax = plt. subplots () #create simple line plot ax. plot ([0, 10],[0, 20]) #set aspect ratio to 3 ratio = 3 x_left, x_right = ax. get_xlim () y_low, y_high = ax. get_ylim () ax. set_aspect ( abs ((x_right-x_left)/(y_low-y_high))*ratio) #displayplot plt. show ()
A jeśli chcemy, aby oś Y była krótsza niż oś X, możemy po prostu określić, że współczynnik proporcji będzie liczbą mniejszą niż 1:
import matplotlib.pyplot as plt #define matplotlib figure and axis fig, ax = plt. subplots () #create simple line plot ax. plot ([0, 10],[0, 20]) #set aspect ratio to .3 ratio = .3 x_left, x_right = ax. get_xlim () y_low, y_high = ax. get_ylim () ax. set_aspect ( abs ((x_right-x_left)/(y_low-y_high))*ratio) #displayplot plt. show ()
Więcej samouczków dotyczących Matplotlib znajdziesz tutaj .