Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

จะเพิ่มตำนานให้กับแผนภูมิใน Python ได้อย่างไร?


แนะนำตัว...

จุดประสงค์หลักของแผนภูมิคือการทำให้ข้อมูลเข้าใจได้ง่าย "ภาพหนึ่งภาพมีค่าหนึ่งพันคำ" หมายถึง ความคิดที่ซับซ้อนที่ไม่สามารถบรรยายออกมาเป็นคำพูดได้ สามารถถ่ายทอดด้วยภาพ/แผนภูมิเดียวได้

เมื่อวาดกราฟที่มีข้อมูลจำนวนมาก คำอธิบายอาจยินดีที่จะแสดงข้อมูลที่เกี่ยวข้องเพื่อปรับปรุงความเข้าใจในข้อมูลที่นำเสนอ

ทำอย่างไร..

ใน matplotlib สามารถนำเสนอตำนานได้หลายวิธี คำอธิบายประกอบเพื่อดึงดูดความสนใจไปยังจุดใดจุดหนึ่งก็มีประโยชน์เช่นกันในการช่วยให้ผู้อ่านเข้าใจข้อมูลที่แสดงบนกราฟ

1. ติดตั้ง matplotlib โดยเปิดพรอมต์คำสั่ง python และเริ่มทำงาน pip install matplotlib

2.เตรียมข้อมูลที่จะแสดง

ตัวอย่าง

import matplotlib.pyplot as plt

# data prep (I made up data no accuracy in these stats)
mobile = ['Iphone','Galaxy','Pixel']

# Data for the mobile units sold for 4 Quaters in Million
units_sold = (('2016',12,8,6),
('2017',14,10,7),
('2018',16,12,8),
('2019',18,14,10),
('2020',20,16,5),)

3.แยกข้อมูลออกเป็นอาร์เรย์สำหรับหน่วยเคลื่อนที่ของแต่ละบริษัท

ตัวอย่าง

# data prep - splitting the data
IPhone_Sales = [Iphones for Year, Iphones, Galaxy, Pixel in units_sold]
Galaxy_Sales = [Galaxy for Year, Iphones, Galaxy, Pixel in units_sold]
Pixel_Sales = [Pixel for Year, Iphones, Galaxy, Pixel in units_sold]

# data prep - Labels
Years = [Year for Year, Iphones, Galaxy,Pixel in units_sold]

# set the position
Position = list(range(len(units_sold)))

# set the width
Width = 0.2

4.การสร้างกราฟแท่งด้วยข้อมูลที่เตรียมไว้ การขายสินค้าแต่ละรายการจะได้รับการเรียกไปที่ .bar โดยระบุตำแหน่งและยอดขาย

เพิ่มคำอธิบายประกอบโดยใช้แอตทริบิวต์ xy และ xytext เมื่อดูจากข้อมูลแล้ว ยอดขาย Google Pixel สำหรับอุปกรณ์เคลื่อนที่ลดลง 50% จาก 10 ล้านเครื่องในปี 2019 เหลือเพียง 5 ล้านเครื่องในปี 2022 ดังนั้นเราจะตั้งค่าข้อความและคำอธิบายประกอบให้อยู่ในแถบสุดท้าย

สุดท้าย เราจะเพิ่มคำอธิบายแผนภูมิโดยใช้พารามิเตอร์คำอธิบาย โดยค่าเริ่มต้น matplotlib จะวาดคำอธิบายแผนภูมิไว้เหนือพื้นที่ที่มีข้อมูลทับซ้อนกันน้อยที่สุด

ตัวอย่าง

plt.bar([p - Width for p in Position], IPhone_Sales, width=Width,color='green')
plt.bar([p for p in Position], Galaxy_Sales , width=Width,color='blue')
plt.bar([p + Width for p in Position], Pixel_Sales, width=Width,color='yellow')

# Set X-axis as years
plt.xticks(Position, Years)

# Set the Y axis label
plt.xlabel('Yearly Sales')
plt.ylabel('Unit Sales In Millions')

# Set the annotation Use the xy and xytext to change the arrow
plt.annotate('50% Drop in Sales', xy=(4.2, 5), xytext=(5.0, 12),
horizontalalignment='center',
arrowprops=dict(facecolor='red', shrink=0.05))

# Set the legent
plt.legend(mobile, title='Manufacturers')

ผลลัพธ์

<matplotlib.legend.Legend at 0x19826618400>

จะเพิ่มตำนานให้กับแผนภูมิใน Python ได้อย่างไร?

  • หากคุณรู้สึกว่าการเพิ่มคำอธิบายแผนภูมิในแผนภูมิมีเสียงรบกวน คุณสามารถใช้ตัวเลือก bbox_to_anchor เพื่อวางคำอธิบายแผนภูมิภายนอกได้ bbox_to_anchor มีตำแหน่ง (X, Y) โดยที่ 0 คือมุมล่างซ้ายของกราฟและ 1 คือมุมขวาบน

หมายเหตุ: - ใช้ .subplots_adjust เพื่อปรับคำอธิบายที่กราฟเริ่มต้นและสิ้นสุด

เช่น. ค่า right=0.50 หมายความว่าปล่อยให้ 50% ของหน้าจออยู่ทางด้านขวาของพล็อต ค่าเริ่มต้นสำหรับด้านซ้ายคือ 0.125 ซึ่งหมายความว่าเหลือ 12.5% ​​ของช่องว่างทางด้านซ้าย

ผลลัพธ์

plt.legend(mobile, title='Manufacturers', bbox_to_anchor=(1, 0.8))
plt.subplots_adjust(right=1.2)

จะเพิ่มตำนานให้กับแผนภูมิใน Python ได้อย่างไร?

ตัวอย่าง

6.สุดท้ายให้เราบันทึกตัวเลขนั้นไว้

import matplotlib.pyplot as plt

# data prep (I made up data no accuracy in these stats)
mobile = ['Iphone','Galaxy','Pixel']

# Data for the mobile units sold for 4 Quaters in Million
units_sold = (('2016',12,8,6),
('2017',14,10,7),
('2018',16,12,8),
('2019',18,14,10),
('2020',20,16,5),)

# data prep - splitting the data
IPhone_Sales = [Iphones for Year, Iphones, Galaxy, Pixel in units_sold]
Galaxy_Sales = [Galaxy for Year, Iphones, Galaxy, Pixel in units_sold]
Pixel_Sales = [Pixel for Year, Iphones, Galaxy, Pixel in units_sold]

# data prep - Labels
Years = [Year for Year, Iphones, Galaxy,Pixel in units_sold]

# set the position
Position = list(range(len(units_sold)))

# set the width
Width = 0.2

plt.bar([p - Width for p in Position], IPhone_Sales, width=Width,color='green')
plt.bar([p for p in Position], Galaxy_Sales , width=Width,color='blue')
plt.bar([p + Width for p in Position], Pixel_Sales, width=Width,color='yellow')

# Set X-axis as years
plt.xticks(Position, Years)

# Set the Y axis label
plt.xlabel('Yearly Sales')
plt.ylabel('Unit Sales In Millions')

# Set the annotation Use the xy and xytext to change the arrow
plt.annotate('50% Drop in Sales', xy=(4.2, 5), xytext=(5.0, 12),
horizontalalignment='center',
arrowprops=dict(facecolor='red', shrink=0.05))

# Set the legent
plt.legend(mobile, title='Manufacturers')

plt.legend(mobile, title='Manufacturers')
plt.subplots_adjust(right=1.2)

# plt.show()
plt.savefig('MobileSales.png')

จะเพิ่มตำนานให้กับแผนภูมิใน Python ได้อย่างไร?