Matplotlib Line Plot không chỉ ra Nhãn
Tôi có Tập dữ liệu sau mà tôi muốn lấy sơ đồ dòng. Cốt truyện đúng nhưng các nhãn bị thiếu mặc dù tôi cung cấp tên nhãn trong mã. Vui lòng cung cấp cho tôi một phương pháp để bao gồm các nhãn. Ngoài ra, nếu tôi cố gắng đưa xlabel và ylabel vào mã, nó sẽ báo lỗi cho tôiAttributeError: 'Line2D' object has no property 'xlabel'
Thay đổi khung dữ liệu
UserId | date |-7|-6|-5|-4|-3|-2|-1|0 |1 |2 |3 |4 |5 |6 |7
1 2009-10-17 17:38:32.590 |0 |0 |0 |0 |0 |0 |1 |0 |1 |0 |0 |0 |0 |0 |0
2 2009-10-19 00:37:23.067 |0 |0 |0 |0 |0 |1 |1 |0 |1 |0 |0 |0 |0 |0 |0
3 2009-10-20 08:37:14.143 |0 |0 |0 |0 |0 |0 |1 |0 |0 |0 |0 |0 |0 |0 |0
4 2009-10-21 18:07:51.247 |0 |0 |0 |0 |0 |0 |1 |0 |0 |0 |0 |0 |0 |0 |0
5 2009-10-22 21:25:24.483 |0 |0 |0 |0 |0 |0 |1 |0 |0 |0 |0 |0 |0 |0 |0
Mã
badges = ["A", "B", "C"]
for badge in badges:
res.iloc[:,2:].mean().plot(kind='line', label = badge)
Đầu ra
Đây là kết quả thu được từ mã này. Tôi muốn các nhãn cho cả ba dòng có trong biểu đồ. Cùng với đó, tôi muốn thêm xlabel = "Week" và ylabel = "Mean Posts" trên trục.
Trả lời
Các chức năng cơ bản cần thiết để truyền thuyết hiển thị và trục nhãn plt.legend, plt.xlabelvà plt.ylabel. Xem bên dưới để biết một ví dụ khép kín. Thật khó để cụ thể hơn nếu không nhìn thấy tất cả các phần có liên quan trong mã của bạn.
import matplotlib.pyplot as plt
x = [1, 2, 3]
y1 = [4, 5, 6]
y2 = [7, 8, 9]
plt.plot(x, y1, "b", label="y1")
plt.plot(x, y2, "r", label="y2")
plt.legend()
plt.xlabel("x")
plt.ylabel("y")
plt.savefig("temp")
Bạn có thể giữ tất cả các thông số như plt.legend(), plt.xlabel, plt.ylabel, plt.xticks, vv bên ngoài forvòng lặp.
Thử cái này:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style('darkgrid')
badges = ["A", "B", "C"]
for badge in badges:
res.iloc[:,2:].mean().plot(kind='line', label = badge)
plt.ylabel('y',size=20,weight='bold')
plt.xlabel('x',size=20,weight='bold')
plt.legend(frameon=False, prop={'size':15})
plt.show()
Hơn nữa, nếu bạn thích 3 lô riêng biệt cho mỗi badgesau đó chuyển sang phần từ plt.ylabel()đến plt.show()bên trong vòng lặp.
Đối số xlabel hoặc ylabel chỉ khả dụng trong phiên bản gấu trúc 1.1.0. hoặc ở trên. tham khảo tài liệuhttps://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.plot.html#pandas.DataFrame.plot
Lý do bạn nhận được AttributeError: Đối tượng 'Line2D' không có thuộc tính 'xlabel' là vì bạn có thể có phiên bản gấu trúc thấp hơn.
bạn có thể kiểm tra phiên bản gấu trúc bằng cách chạy lệnh sau
import pandas as pd
print(pd.__version__)
Bây giờ để đặt x_label / y_label, bạn có thể làm như sau:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
for badge in badges:
res.iloc[:,2:].mean().plot(kind='line', label = badge, ax=ax)
ax.set_ylabel('y')
ax.set_xlabel('x')
ax.legend()
plt.show()