Matplotlib Line พล็อตไม่ระบุป้ายกำกับ
ฉันมีชุดข้อมูลต่อไปนี้ซึ่งฉันต้องการรับพล็อตบรรทัด พล็อตถูกต้อง แต่ป้ายกำกับหายไปแม้ว่าฉันจะระบุชื่อป้ายกำกับในรหัส โปรดระบุวิธีการรวมป้ายกำกับ นอกจากนี้ถ้าฉันพยายามรวม xlabel และ ylabel ไว้ในโค้ดมันทำให้ฉันมีข้อผิดพลาดAttributeError: 'Line2D' object has no property 'xlabel'
ความละเอียดของ Dataframe
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
รหัส
badges = ["A", "B", "C"]
for badge in badges:
res.iloc[:,2:].mean().plot(kind='line', label = badge)
เอาต์พุต
นี่คือผลลัพธ์ที่ได้จากรหัสนี้ ฉันต้องการให้ป้ายกำกับของทั้งสามบรรทัดปรากฏในกราฟ พร้อมกับที่ฉันต้องการเพิ่ม xlabel = "Week" และ ylabel = "Mean Posts" บนแกน
คำตอบ
ฟังก์ชั่นพื้นฐานที่จำเป็นในการตำนานการแสดงผลและป้ายชื่อแกนมีplt.legend, และplt.xlabel plt.ylabelดูตัวอย่างที่มีอยู่ในตัวด้านล่าง เป็นการยากที่จะเจาะจงมากขึ้นโดยไม่ต้องดูส่วนที่เกี่ยวข้องทั้งหมดของโค้ดของคุณ
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")
คุณสามารถเก็บทุกพารามิเตอร์เช่นplt.legend(), plt.xlabel, plt.ylabel, plt.xticksฯลฯ นอกforวง
ลองสิ่งนี้:
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()
ยิ่งไปกว่านั้นถ้าคุณชอบ 3 พล็อตที่แยกจากกันให้badgeย้ายส่วนจากplt.ylabel()ไปplt.show()ข้างในลูป
อาร์กิวเมนต์ xlabel หรือ ylabel พร้อมใช้งานในแพนด้าเวอร์ชัน 1.1.0 เท่านั้น หรือสูงกว่า อ้างอิงเอกสารhttps://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.plot.html#pandas.DataFrame.plot
สาเหตุที่คุณได้รับAttributeError: วัตถุ 'Line2D' ไม่มีคุณสมบัติ 'xlabel'เป็นเพราะคุณอาจมีแพนด้าเวอร์ชันต่ำกว่า
คุณสามารถตรวจสอบเวอร์ชั่นของแพนด้าได้โดยใช้คำสั่งต่อไปนี้
import pandas as pd
print(pd.__version__)
ตอนนี้สำหรับการใส่ x_label / y_label คุณสามารถทำสิ่งต่อไปนี้:
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()