Có thể tạo nhiều biểu đồ thanh trong python không?

Ở đây trong bài đăng này, chúng ta sẽ xem cách vẽ biểu đồ hai thanh trên một trục khác và biểu đồ nhiều thanh bằng thư viện Matplotlib của Python trên một trục. Trước tiên hãy hiểu biểu đồ thanh là gì. Chúng ta có thể sử dụng biểu đồ thanh để so sánh các giá trị số hoặc dữ liệu của các nhóm khác nhau hoặc chúng ta có thể nói rằng Biểu đồ thanh là một loại biểu đồ hoặc đồ thị có thể trực quan hóa dữ liệu phân loại bằng các thanh hình chữ nhật và có thể dễ dàng vẽ biểu đồ trên trục dọc hoặc trục ngang

Hãy xem cả hai trong hành động

Trước hết, để tạo bất kỳ loại biểu đồ thanh nào cho dù đó là biểu đồ thanh đơn hay biểu đồ nhiều thanh, chúng tôi cần nhập các thư viện sẽ giúp chúng tôi thực hiện tác vụ của mình

  • Thư viện Pandas trong nhiệm vụ này sẽ giúp chúng tôi nhập 'các quốc gia' của chúng tôi. tệp csv'
  • Từ thư viện NumPy, chúng tôi sẽ sử dụng np. arange() sẽ hoạt động tương tự như a range(10) = [0,1,2,3,4,5,6,7,8,9]
  • Và thư viện cuối cùng và quan trọng nhất giúp chúng ta trực quan hóa dữ liệu của mình là Matplotlib. Nó sẽ giúp chúng ta vẽ biểu đồ nhiều thanh

Với các dòng mã dưới đây, chúng ta có thể nhập cả ba thư viện với bí danh tiêu chuẩn của chúng

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

Thứ hai, chúng ta phải nhập tệp mà chúng ta cần trực quan hóa. Nếu bạn muốn tải xuống và sử dụng tệp CSV, bạn có thể tải xuống từ đây. Chúng ta có thể sử dụng gấu trúc. read_csv() chức năng như hình dưới đây

data = pd.read_csv('countries.csv')
data.head()

Bây giờ câu hỏi đặt ra mà chúng tôi muốn hình dung là – GDP và Dân số của 10 quốc gia hàng đầu trong năm 2007

Từ đoạn mã dưới đây, chúng tôi đã trích xuất dữ liệu chỉ cho năm 2007 và sau đó sắp xếp nó theo dân số. Ngoài ra, chúng tôi đã lấy 10 giá trị hàng đầu và lưu trữ nó trong biến có tên datasort

data_2007 = data[data.year == 2007]
datasort = data_2007.sort_values('population', ascending = False)
datasort = datasort.head(10)

Bây giờ, hãy vẽ biểu đồ hai biểu đồ thanh hoặc biểu đồ thanh bằng mã bên dưới

x = range(10)
#The below code will create two plots. The parameters that .subplot take are (row, column, no. of plots).
plt.subplot(2,1,1)
#This will create the bar graph for poulation
pop = plt.bar(x, datasort['population']/10**6)
plt.ylabel('Population in Millions')
plt.xticks([],[])
#The below code will create the second plot.
plt.subplot(2,1,2)
#This will create the bar graph for gdp i.e gdppercapita divided by population.
gdp =plt.bar(x, datasort['gdpPerCapita'] * datasort['population'] / 10 ** 9)
plt.ylabel('GDP in Billions')
plt.xticks(x, datasort['country'], rotation='vertical')
plt.show()

Có thể tạo nhiều biểu đồ thanh trong python không?

 

Vẽ biểu đồ nhiều thanh bằng thư viện Matplotlib của Python

Đoạn mã dưới đây sẽ tạo biểu đồ nhiều thanh bằng thư viện Matplotlib của Python. Hãy nhìn vào đoạn mã dưới đây

x = np.arange(10)
ax1 = plt.subplot(1,1,1)
w = 0.3
#plt.xticks(), will label the bars on x axis with the respective country names.
plt.xticks(x + w /2, datasort['country'], rotation='vertical')
pop =ax1.bar(x, datasort['population']/ 10 ** 6, width=w, color='b', align='center')
#The trick is to use two different axes that share the same x axis, we have used ax1.twinx() method.
ax2 = ax1.twinx()
#We have calculated GDP by dividing gdpPerCapita to population.
gdp =ax2.bar(x + w, datasort['gdpPerCapita'] * datasort.population / 10**9, width=w,color='g',align='center')
#Set the Y axis label as GDP.
plt.ylabel('GDP')
#To set the legend on the plot we have used plt.legend()
plt.legend([pop, gdp],['Population in Millions', 'GDP in Billions'])
#To show the plot finally we have used plt.show().
plt.show()

Dưới đây bạn có thể thấy biểu đồ nhiều thanh tôi. e cho dân số và GDP trên cùng một ô có hai trục x khác nhau ở cả hai bên

 

Có thể tạo nhiều biểu đồ thanh trong python không?

 

Hy vọng bạn thích bài viết của chúng tôi. Để tìm hiểu thêm về gói Matplotlib, bạn có thể xem tài liệu chính thức tại đây

Matplotlib là một thư viện python hấp dẫn được sử dụng cho nhiều công cụ trực quan hóa dữ liệu, đặc biệt là vẽ biểu đồ và hoạt ảnh, đồ họa, v.v. Biểu đồ thanh đặc biệt trong matplotlib, được cho là biểu đồ tốt nhất cho mục đích so sánh. Chúng tôi không chỉ có thể thêm một thanh vào biểu đồ thanh matplotlib mà còn có thể thêm nhiều biểu đồ thanh vào biểu đồ

Trong bài viết này, chúng ta sẽ tìm hiểu cách vẽ nhiều biểu đồ thanh trong python

Biểu đồ thanh nhiều nhóm Matplotlib

Nhiều biểu đồ được nhóm có nghĩa là biểu đồ thanh nằm cạnh nhau trong biểu đồ. Việc vẽ biểu đồ thanh nhiều nhóm có thể được thực hiện nhanh chóng với sự trợ giúp của hàm bar() của matplotlib. thư viện pyplot. Chỉ chúng tôi cần sửa đổi một chút trong mã để chèn số lượng nhiều ô cần thiết vào hình

Ví dụ 1)

#import all the necessary packages and libraries
import matplotlib.pyplot as plt
import numpy as np
#creating the grouped_bar function to plot the graph
def grouped_bar(x,y1,y2,width):
    #plotting the first bar graph
    plt.bar(x-0.2,y1,width=width)
    #plotting the second bar graph
    plt.bar(x+0.2,y2,width=width)
    #creating the title to the plot
    plt.title("Annual profit of a company")
    #creating the label along the x-axis
    plt.xlabel("year")
    #creating labels along the y axis
    plt.ylabel("profit in million dollars")
    #creating legends
    plt.legend(["Intel","AMD"])
    plt.show()
#creating the main() function
def main():
    #creating data points for the x values
    x=np.arange(2012,2022,1)
    #creating data points for the first bar graph
    y1=[165,175,144,122,143,138,167,156,154,186]
    #creating data points for the second bar graph
    y2=[34,67,44,53,84,93,86,104,136,145]
    #specifying the width of the bars(combined)
    width=0.4
    #calling the function
    grouped_bar(x,y1,y2,width)
#calling the main() function
if __name__ == "__main__":
    main()

đầu ra

Có thể tạo nhiều biểu đồ thanh trong python không?
Hình 1

Giải trình

  1. Trước tiên, chúng tôi đã nhập tất cả các thư viện và mô-đun cần thiết trong mã với sự trợ giúp của câu lệnh nhập của python. Chúng tôi đã nhập matplotlib. pyplot và thư viện numpy sử dụng tên bí danh là plt và np
  2. Tiếp theo, chúng ta đã tạo một hàm do người dùng định nghĩa có tên là hàm grouped_bar(). Hàm sẽ nhận bốn tham số. x, y1, y2 và chiều rộng. Trong chức năng này, chúng tôi đã vẽ biểu đồ thanh được nhóm bằng chức năng thanh () của matplotlib. pyplot. Chúng tôi đã chuyển x làm tham số và trừ 0. 3 từ giá trị của x. Chúng tôi đã chuyển y1 làm giá trị, trục y cho thanh và đối số chiều rộng cho chiều rộng của thanh
  3. Ta cũng đã đặt tiêu đề cho cốt truyện bằng hàm title(). Sau đó, chúng tôi cung cấp các nhãn cho hình bằng cách sử dụng hàm xlabel() và ylabel(). Sau đó, chúng tôi đã cung cấp legend() cho hình bằng cách sử dụng hàm legend()
  4. Bây giờ chúng ta đã tạo hàm main(). Đây là phần chính của chương trình hoặc mã trình điều khiển của chương trình. Chúng tôi đã tạo một mảng numpy để lưu trữ giá trị của x. Sau đó, chúng tôi đã tạo một danh sách các loại dữ liệu cho giá trị của y1 và y2, mà chúng tôi sử dụng sau này để vẽ hai biểu đồ thanh
  5. Chúng tôi cũng đặt giá trị cho chiều rộng của các thanh. Trong hàm main (), cuối cùng chúng ta đã gọi hàm grouped_bar () và chuyển các giá trị của x, y1, y2 và chiều rộng làm đối số

Nhiều biểu đồ thanh xếp chồng lên nhau bằng Matplotlib

Chúng ta có thể vẽ nhiều thanh xếp chồng lên nhau trong matplotlib chỉ bằng chức năng vẽ đồ thị. Chúng tôi không cần sử dụng bất kỳ thay đổi nào khác trong mã. Chúng ta chỉ cần sử dụng nhiều hàm plot() cho mã và truyền các đối số hoặc tham số hợp lệ cần thiết cho các hàm. Điều này có thể được minh họa trong các ví dụ sau

Ví dụ (2)

#import all the necessary packages and libraries
import matplotlib.pyplot as plt
import numpy as np
#creating the grouped_bar function to plot the graph
def stacked_bar(x,y1,y2):
    #plotting the first bar graph
    plt.bar(x,y1,color="red")
    #plotting the second bar graph
    plt.bar(x,y2,color="green")
    #creating the title to the plot
    plt.title("Annual profit of a company")
    #creating the label along the x-axis
    plt.xlabel("year")
    #creating labels along the y axis
    plt.ylabel("profit in million dollars")
    #creating legends
    plt.legend(["Intel","AMD"])
#creating the main() function
def main():
    #creting data points for the x values
    x=np.arange(2000,2010,1)
    #creating data points for the first bar graph
    y1=[65,65,44,22,43,38,67,56,5,56]
    #creating data points for the second bar graph
    y2=[34,67,4,23,24,53,86,74,75,8]
    #specifying the width of the bars(combined)
    #calling the function
    stacked_bar(x,y1,y2)
#calling the main() function
if __name__ == "__main__":
    main()

đầu ra

Có thể tạo nhiều biểu đồ thanh trong python không?
Hình 2

Giải trình

  1. Trước tiên, chúng tôi đã nhập tất cả các thư viện cần thiết vào mã. Chúng tôi đã sử dụng câu lệnh nhập cho cùng
  2. Tiếp theo, chúng tôi đã tạo một hàm do người dùng định nghĩa có tên là stacked_bar () nhận ba đối số là x y1 và y2. Trong hàm, chúng tôi đã vẽ các thanh bằng cách sử dụng hàm bar() của thư viện matplotlib. Chúng tôi đã chuyển x, y1 và màu cho thanh đầu tiên. Chúng tôi đặt màu của thanh đầu tiên là màu đỏ. Tương tự, chúng tôi đã tạo biểu đồ cho thanh thứ hai và chuyển các giá trị tương tự. Tuy nhiên, chúng tôi đặt màu của thanh thứ hai thành màu xanh lá cây
  3. Tiếp theo, chúng tôi đặt tiêu đề, nhãn và chú thích cho plt bằng cách sử dụng hàm title (), xlabel (), ylabel() và legend() của thư viện matplotlib
  4. Bây giờ chúng ta tạo hàm main() trong code. Đây được gọi là mã lái xe của chương trình
  5. Chúng tôi đã tạo một điểm dữ liệu cho biến x bằng cách sử dụng mảng có nhiều mảng
  6. Chúng tôi đã tạo một danh sách các giá trị của y1 và y2. Chúng tôi đã sử dụng chúng làm giá trị cho các thanh
  7. Cuối cùng, chúng tôi đã gọi hàm stack_bar () và chuyển x, y1 và y2 làm đối số cho hàm này
  8. Cuối cùng, chúng ta đã gọi hàm main() bằng đoạn mã sau

nếu __name__ == “__main__”

chủ yếu ()

Nhiều thanh ngang xếp chồng lên nhau

Chúng ta cũng có thể vẽ nhiều thanh xếp chồng lên nhau trong matplotlib. Chúng ta có thể dễ dàng làm điều đó bằng cách chuyển nhiều hàm plot() trong hình chính xác với tất cả các thuộc tính và phe hợp lệ. Chúng ta có thể sử dụng tất cả các thuộc tính được liên kết với biểu đồ thanh cho loại biểu đồ này

Ví dụ (3)

#import all the necessary libraries
import matplotlib.pyplot as plt
#creating the horizontal_bar function
def horizontal_bar(y,x1,x2):
    #plotting the first horizontal_bar
    plt.barh(y, x1)
    #plotting the second horizontal_bar
    plt.barh(y, x2)
    # setting label of the y-axis
    plt.ylabel("employees")
    # setting label of the x-axis
    plt.xlabel("salary")
    #setting title to the graph
    plt.title("Horizontal stacked bar graph")
    plt.show()
#creating the main() function
def main():
    #creating the value for y.
    y=['john', 'simon', 'smith', 'veda', 'venkat',"perry"]
    # crating the values for the x-axis.
    x1=[52455,78000,75000,78000,14442,14488]
    x2=[45111,71114,57574,47575,54275,55000]
    horizontal_bar(y,x1,x2)
#calling the main() function.
if __name__ == "__main__":
    main()

đầu ra

Có thể tạo nhiều biểu đồ thanh trong python không?
Hình 3

Giải trình

  1. Chúng tôi đã nhập các thư viện và mô-đun cần thiết trong mã của mình theo thông lệ. Ở đây chúng tôi đã nhập thư viện matplotlib bằng tên bí danh
  2. Tiếp theo, chúng tôi đã tạo một hàm do người dùng định nghĩa có tên là vertical_bar() nhận ba đối số. y, x1 và x2. Trong chức năng, chúng tôi đã vẽ các thanh ngang bằng hàm barh() của matplotlib. Chúng tôi đã chuyển y và x1 cho thanh ngang đầu tiên và x và y2 cho thanh ngang thứ hai
  3. Chúng tôi cũng cung cấp nhãn và tiêu đề cho biểu đồ
  4. Tiếp theo, chúng ta tạo hàm main(), là mã điều khiển chính của chương trình. Trong chức năng này, chúng tôi đã tạo một danh sách nơi chúng tôi lưu trữ tên của nhân viên và đặt tên là y
  5. Tiếp theo, chúng tôi đã tạo hai danh sách, x1 và x2, cho các giá trị của hai biểu đồ thanh ngang. Chúng tôi đã gọi hàm vertical_bar() với các đối số cần thiết được truyền vào
  6. Cuối cùng, chúng ta đã gọi hàm main() bằng lệnh sau

nếu __name__ == “__main__”

chủ yếu ()

Nhiều biểu đồ ngang

Chúng ta cũng có thể dễ dàng tạo nhiều biểu đồ ngang trong matplotlib bằng hàm barh(). Tuy nhiên, chúng ta cần thay đổi mã một chút để hiển thị phù hợp. Nếu chúng ta cố gắng vẽ các biểu đồ thanh trong một hình, thì các thanh ngang sẽ được xếp chồng lên nhau. Nếu chúng ta muốn hiển thị các biểu đồ thanh ngang cạnh nhau, chúng ta cần dịch chuyển các thanh theo một khoảng cách hợp lý. Chúng ta có thể đạt được điều tương tự bằng cách tạo một mảng có nhiều mảng và sau đó trừ hoặc thêm một số số từ mảng theo yêu cầu

Điều này được minh họa trong đoạn mã sau

Ví dụ (4)

________số 8_______

đầu ra

Có thể tạo nhiều biểu đồ thanh trong python không?
hinh 4

Giải trình

  1. Chúng tôi đã nhập matplotlib. thư viện pyplot và numpy sử dụng tên bí danh của chúng
  2. Tiếp theo, chúng ta tạo một hàm do người dùng định nghĩa có tên là thanh ngang (), hàm này nhận hai đối số. y, x1, x2 và chiều rộng. Trong chức năng, chúng tôi đã vẽ biểu đồ thanh ngang bằng hàm barh (). Chúng tôi đã trừ 0. 3 từ giá trị y của biểu đồ thanh đầu tiên và thêm cùng một số vào giá trị y của biểu đồ thanh thứ hai
  3. Lưu ý rằng chúng tôi cũng đã chuyển một thuộc tính quan trọng khác cho hàm. chiều cao. Thuộc tính này rất quan trọng để hiển thị chính xác biểu đồ nhiều thanh ngang. Sau đó, chúng tôi đã cung cấp nhãn cho biểu đồ bằng cách sử dụng các hàm xlabel() và ylabel(). Cuối cùng chúng tôi đã cung cấp tiêu đề cho cốt truyện và hiển thị cốt truyện bằng lệnh plt. chức năng hiển thị (). Lưu ý rằng trong sổ ghi chép Jupyter, chúng ta có thể bỏ qua mã plt. chỉ()
  4. Chúng tôi đã tạo hàm main(), là mã điều khiển của chương trình. Trong hàm, chúng tôi đã tạo một điểm dữ liệu bằng cách sử dụng một mảng có nhiều mảng và đặt tên cho nó là y. Chúng tôi cũng đã tạo hai danh sách, cụ thể là x1 và x2. Chúng tôi cũng đặt giá trị chiều rộng cho chiều cao của biểu đồ. Tiếp theo, chúng tôi đã gọi hàm vertical_bar() bằng cách sử dụng các đối số bắt buộc được truyền
  5. Cuối cùng, chúng tôi đã khai báo hàm main() làm mã điều khiển của chương trình bằng cách sử dụng các dòng mã sau

nếu __name__ == “__main__”

chủ yếu ()

Vẽ nhiều biểu đồ thanh bằng thư viện Pandas

Chúng ta có thể sử dụng các thư viện bên ngoài trong python để vẽ nhiều biểu đồ thanh. Pandas là một thư viện phân tích dữ liệu phổ biến nhưng cũng cung cấp chức năng vẽ biểu đồ dữ liệu. Ta chỉ cần sử dụng hàm plot() của pandas để vẽ biểu đồ nhiều thanh trong đồ thị. Tuy nhiên, trước khi chuyển các giá trị làm đối số, điều quan trọng là phải tạo một khung dữ liệu theo thông lệ tiêu chuẩn. Điều này có thể dễ dàng thực hiện bằng chức năng DataFrame() của chính thư viện gấu trúc

Ví dụ (5)

#import the required libraries and modules in the current code.
import pandas as pd
import matplotlib.pyplot as plt
#creating the pandas_plot() function
def pandas_plot(x):
    #creating data frame for the plot
    df=pd.DataFrame(x)
    #plotting using pandas po=lot() function
    df.plot(x="name",kind="bar",title="Marks distribution of the students")
    #assigning labels along the x-axis
    plt.xlabel("Name of the students")
    #assigning labels along the y axis
    plt.ylabel("Marks of the students")
#creating the main () function
def main():
    #creating the value of x
    x={"name":["Joe","john","devid","miller"],"Science":[45,56,84,78],"maths":[89,34,32,44]}
    #calling the pandas_plot function
    pandas_plot(x)
#declearing the main() function as the driving function of the code
if __name__ == "__main__":
    main ()

đầu ra

Có thể tạo nhiều biểu đồ thanh trong python không?
Hình 5

Giải trình

  1. Chúng tôi đã nhập thư viện gấu trúc và matplotlib. thư viện pyplot bằng câu lệnh nhập
  2. Tiếp theo ta tạo hàm vertical_bar() chỉ nhận 1 tham số là x. Sau đó, chúng tôi đã tạo khung dữ liệu để vẽ biểu đồ trong thư viện gấu trúc. Chúng tôi đã chuyển x cho chức năng này. Tiếp theo, chúng ta sử dụng hàm plot() để vẽ khung dữ liệu. Chúng tôi đã chuyển giá trị của x thành “tên”. Chúng tôi đã chuyển giá trị của loại thuộc tính là “bar”. Ngoài ra, chúng tôi đã cung cấp tiêu đề cho biểu đồ bằng thuộc tính tiêu đề
  3. Sau đó, chúng tôi đã cung cấp nhãn cho biểu đồ bằng cách sử dụng hàm xlabel() và hàm ylabel(). Chúng ta có thể sử dụng thư viện pandas và matplotlib để làm việc trên hình không gian làm việc chính xác
  4. Sau đó, chúng tôi đã tạo hàm main (), là mã điều khiển của chương trình. Trong hàm main(), sau đó chúng tôi đã tạo các giá trị của x dưới dạng định dạng khung dữ liệu. Chúng tôi đã tạo một đối tượng từ điển và chuyển giá trị của khóa làm tên cột. Giá trị ở dạng danh sách đại diện cho giá trị của các thanh
  5. Sau đó, chúng tôi đã gọi hàm pandas_plot() và chuyển giá trị của x làm đối số
  6. Cuối cùng, chúng tôi đã khai báo hàm main() làm mã điều khiển của chương trình bằng đoạn mã sau

nếu __name__ == “__main__”

chủ yếu ()

Phần kết luận

Trong bài viết này, chúng ta đã tìm hiểu về cách vẽ nhiều biểu đồ thanh trong python bằng cách sử dụng các thư viện khác nhau. Chúng tôi đã sử dụng pandas và thư viện matplotlib cho cùng. Matplotlib được sử dụng rộng rãi hơn để vẽ biểu đồ vì nó được thiết kế đặc biệt hơn để trực quan hóa các biểu đồ. Ngược lại, mục đích chính của thư viện gấu trúc là để làm sạch dữ liệu, phân tích, v.v.

Chúng tôi khuyên người dùng nên tra cứu các thư viện python matplotlib và pandas để biết thêm về các chức năng và thuộc tính khác nhau được liên kết với cùng một

Có thể tạo nhiều biểu đồ thanh không?

Đôi khi có nhiều hơn hai bộ dữ liệu được so sánh trong biểu đồ thanh. Trong trường hợp đó, có thể sử dụng biểu đồ nhiều thanh . Một biểu đồ nhiều cột so sánh bao nhiêu bộ dữ liệu bạn muốn.

Làm cách nào để vẽ biểu đồ thanh đôi trong gấu trúc?

Các cách khác nhau để vẽ biểu đồ thanh trong cùng một biểu đồ đang sử dụng matplotlib và gấu trúc được thảo luận bên dưới. .
Nhập mô-đun
Tạo hoặc tải dữ liệu
Truyền dữ liệu cho cốt truyện()
Đồ thị lô

Có ba biểu đồ thanh?

Có thể sử dụng biểu đồ ba thanh để so sánh dữ liệu được ghi lại trong khoảng thời gian ba ngày hoặc trong vài ngày .

Sơ đồ nhiều thanh được xây dựng như thế nào?

Một biểu đồ nhiều cột thể hiện mối quan hệ giữa các giá trị khác nhau của dữ liệu. Mỗi giá trị dữ liệu được biểu thị bằng một cột trong biểu đồ. Trong biểu đồ nhiều thanh, nhiều điểm dữ liệu cho từng loại dữ liệu được hiển thị cùng với việc thêm các cột . Chúng cũng được sử dụng cho hai hoặc nhiều bộ dữ liệu có liên quan với nhau.