Bạn có thể truyền plt.scatter
một c
đối số cho phép bạn chọn màu. Đoạn mã dưới đây xác định một colors
từ điển để ánh xạ màu kim cương của bạn với màu vẽ.
import matplotlib.pyplot as plt
import pandas as pd
carat = [5, 10, 20, 30, 5, 10, 20, 30, 5, 10, 20, 30]
price = [100, 100, 200, 200, 300, 300, 400, 400, 500, 500, 600, 600]
color =['D', 'D', 'D', 'E', 'E', 'E', 'F', 'F', 'F', 'G', 'G', 'G',]
df = pd.DataFrame(dict(carat=carat, price=price, color=color))
fig, ax = plt.subplots()
colors = {'D':'red', 'E':'blue', 'F':'green', 'G':'black'}
ax.scatter(df['carat'], df['price'], c=df['color'].apply(lambda x: colors[x]))
plt.show()
df['color'].apply(lambda x: colors[x])
ánh xạ hiệu quả các màu từ "kim cương" đến "âm mưu".
(Thứ lỗi cho tôi vì tôi không đưa hình ảnh ví dụ khác lên, tôi nghĩ 2 là đủ: P)
Với seaborn
Bạn có thể sử dụng seaborn
một trình bao bọc xung quanh matplotlib
để làm cho nó trông đẹp hơn theo mặc định (tôi biết khá dựa trên ý kiến: P) nhưng cũng có thể thêm một số chức năng vẽ biểu đồ.
Đối với điều này, bạn có thể sử dụng seaborn.lmplot
với fit_reg=False
(ngăn nó tự động thực hiện một số hồi quy).
Đoạn mã dưới đây sử dụng một tập dữ liệu mẫu. Bằng cách chọn, hue='color'
bạn yêu cầu seaborn phân chia khung dữ liệu của bạn dựa trên màu sắc của bạn và sau đó vẽ biểu đồ cho từng cái.
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
carat = [5, 10, 20, 30, 5, 10, 20, 30, 5, 10, 20, 30]
price = [100, 100, 200, 200, 300, 300, 400, 400, 500, 500, 600, 600]
color =['D', 'D', 'D', 'E', 'E', 'E', 'F', 'F', 'F', 'G', 'G', 'G',]
df = pd.DataFrame(dict(carat=carat, price=price, color=color))
sns.lmplot('carat', 'price', data=df, hue='color', fit_reg=False)
plt.show()
Không seaborn
sử dụngpandas.groupby
Nếu bạn không muốn sử dụng seaborn thì bạn có thể sử dụng pandas.groupby
để lấy màu một mình và sau đó vẽ chúng bằng cách chỉ sử dụng matplotlib, nhưng bạn sẽ phải chỉ định màu theo cách thủ công, tôi đã thêm một ví dụ bên dưới:
fig, ax = plt.subplots()
colors = {'D':'red', 'E':'blue', 'F':'green', 'G':'black'}
grouped = df.groupby('color')
for key, group in grouped:
group.plot(ax=ax, kind='scatter', x='carat', y='price', label=key, color=colors[key])
plt.show()
Mã này giả định DataFrame giống như trên và sau đó nhóm nó dựa trên color
. Sau đó, nó lặp lại các nhóm này, vẽ biểu đồ cho từng nhóm. Để chọn màu, tôi đã tạo một colors
từ điển có thể ánh xạ màu kim cương (ví dụ D
) sang màu thực (chẳng hạn red
).