Phần 18: Scatter Plot ( Biểu đồ phân tán ) – Matplotib Basic

Phần 18: Scatter Plot ( Biểu đồ phân tán )                        – Matplotib Basic

1. Khái niệm căn bản :

Biểu đồ phân tán được dùng để vẽ các điểm dữ liệu trên trục hoành và trục tung để thể hiện mức độ ảnh hưởng của 1 biến này do biến khác. Mỗi hàng trong bảng dữ liệu được biểu thị bằng 1 điểm đánh dấu, vị trí dựa vào giá trị của nó trong các cột được đặt trên trục X và Y. 1 biến thứ ba có thể được đặt để ứng với màu sắc hay kích thước của các điểm đánh dấu, do vậy thêm 1 chiều khác vào biểu đồ.
Ví dụ sau đây vẽ 1 biểu đồ phân tán của các cấp lớp so với cấp độ của nam và nữ bằng 2 màu sắc khác nhau.
import matplotlib.pyplot as plt
girls_grades = [89, 90, 70, 89, 100, 80, 90, 100, 80, 34]
boys_grades = [30, 29, 49, 48, 100, 48, 38, 45, 20, 30]
grades_range = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
fig=plt.determine()
ax=fig.add_axes([0,0,1,1])
ax.scatter(grades_range, girls_grades, colour='r')
ax.scatter(grades_range, boys_grades, colour='b')
ax.set_xlabel('Grades Range')
ax.set_ylabel('Grades Scored')
ax.set_title('scatter plot')
plt.present()

2. Ví dụ minh hoạ :

Ví dụ 1 :Biểu diễn biểu đồ phân tán với những màu và kích thước điểm đánh dấu khác nhau.
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cbook as cbook

# Load a numpy document array from yahoo csv knowledge with fields date, open, shut,
# quantity, adj_close from the mpl-knowledge/instance listing. The document array
# shops the date as an np.datetime64 with a day unit ('D') within the date column.
with cbook.get_sample_data('goog.npz') as datafile:
    price_data = np.load(datafile)['price_data'].view(np.recarray)
price_data = price_data[-250:]  # get the newest 250 buying and selling days

delta1 = np.diff(price_data.adj_close) / price_data.adj_close[:-1]

# Marker measurement in models of factors^2
quantity = (15 * price_data.quantity[:-2] / price_data.quantity[0])**2
shut = 0.003 * price_data.shut[:-2] / 0.003 * price_data.open[:-2]

fig, ax = plt.subplots()
ax.scatter(delta1[:-1], delta1[1:], c=shut, s=quantity, alpha=0.5)

ax.set_xlabel(r'$Delta_i$', fontsize=15)
ax.set_ylabel(r'$Delta_{i+1}$', fontsize=15)
ax.set_title('Volume and p.c change')

ax.grid(True)
fig.tight_layout()

plt.present()
Ví dụ 2 :
import numpy as np
import matplotlib.pyplot as plt

# Fixing random state for reproducibility
np.random.seed(19680801)


N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colours = np.random.rand(N)
space = (30 * np.random.rand(N))**2  # 0 to fifteen level radii

plt.scatter(x, y, s=space, c=colours, alpha=0.5)
plt.present()
Ví dụ 3 : Sử dụng key phrases để tạo plot
Có những trường hợp bạn có dữ liệu ở dạng giúp bạn truy cập các biến chi tiết bằng chuỗi. Ví dụ: numpy.recarray hay pandas.DataFrame.
Matplotlib cho phép ta cung cấp 1 đối tượng như thế với đối số từ khóa dữ liệu. Nếu như được cung cấp, có thể tạo các plot các chuỗi ứng với các biến này.
import matplotlib.pyplot as plt
np.random.seed(19680801)

knowledge = {'a': np.arange(50),
        'c': np.random.randint(0, 50, 50),
        'd': np.random.randn(50)}
knowledge['b'] = knowledge['a'] + 10 * np.random.randn(50)
knowledge['d'] = np.abs(knowledge['d']) * 100

fig, ax = plt.subplots()
ax.scatter('a', 'b', c='c', s='d', knowledge=knowledge)
ax.set(xlabel='entry a', ylabel='entry b')
plt.present()

admin

Leave a Reply

Your email address will not be published. Required fields are marked *