Hướng dẫn show value in histogram python - hiển thị giá trị trong biểu đồ python

Không chỉ sử dụng giải pháp

>>> # Need not be sorted, necessarily
>>> a = (0, 1, 1, 1, 2, 3, 7, 7, 23)

>>> def count_elements(seq) -> dict:
...     """Tally elements from `seq`."""
...     hist = {}
...     for i in seq:
...         hist[i] = hist.get(i, 0) + 1
...     return hist

>>> counted = count_elements(a)
>>> counted
{0: 1, 1: 3, 2: 1, 3: 1, 7: 2, 23: 1}
1 mà với một số chức năng được thêm vào.

Show

Nếu bạn không muốn chỉ định các thùng của mình trước và chỉ vẽ các thanh mật độ, nhưng cũng muốn hiển thị số lượng thùng bạn có thể sử dụng sau đây.

import numpy as np
import matplotlib.pyplot as plt

data = np.random.randn(100)
density, bins, _ = plt.hist(data, density=True, bins=20)
count, _ = np.histogram(data, bins)
for x,y,num in zip(bins, density, count):
    if num != 0:
        plt.text(x, y+0.05, num, fontsize=10, rotation=-90) # x,y,str

Kết quả trông như sau:

Hướng dẫn show value in histogram python - hiển thị giá trị trong biểu đồ python


Để hiển thị số lượng trên thanh trong biểu đồ matplotlib, chúng ta có thể lặp lại từng bản vá và sử dụng phương thức văn bản () để đặt các giá trị lên các bản vá.text() method to place the values over the patches.

Các bước

  • Đặt kích thước hình và điều chỉnh phần đệm giữa và xung quanh các ô con.
  • Lập danh sách các số để tạo biểu đồ biểu đồ.
  • Sử dụng phương pháp hist () để tạo biểu đồ.hist() method to make histograms.
  • Lặp lại các bản vá và tính toán giá trị trung bình của mỗi bản vá và chiều cao của bản vá để đặt một văn bản.
  • Để hiển thị hình, sử dụng phương thức show ().show() method.

Thí dụ

import matplotlib.pyplot as plt

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

data = [3, 5, 1, 7, 9, 5, 3, 7, 5]
_, _, patches = plt.hist(data, align="mid")

for pp in patches:
   x = (pp._x0 + pp._x1)/2
   y = pp._y1 + 0.05
   plt.text(x, y, pp._y1)

plt.show()

Đầu ra

Hướng dẫn show value in histogram python - hiển thị giá trị trong biểu đồ python

Hướng dẫn show value in histogram python - hiển thị giá trị trong biểu đồ python

Cập nhật ngày 15 tháng 6 năm 2021 13:19:36

  • Câu hỏi và câu trả lời liên quan
  • Làm thế nào tôi có thể hiển thị văn bản qua các cột trong biểu đồ thanh trong matplotlib?
  • Làm thế nào để hiển thị biểu đồ thanh xếp chồng lên nhau bằng matplotlib trong Python?
  • Làm thế nào để hiển thị tỷ lệ phần trăm trên biểu đồ thanh trong matplotlib?
  • Làm thế nào là các thùng biểu đồ pyplot được giải thích? (Matplotlib)
  • Làm thế nào để hiển thị đường cong trên biểu đồ bằng GGPLOT2 trong R?
  • Matplotlib - làm thế nào để hiển thị các giá trị đếm trên đỉnh của một thanh trong một Countplot?
  • Làm thế nào để vẽ biểu đồ hexbin trong matplotlib?
  • Làm thế nào để làm nổi bật một thanh trong biểu đồ cơ sở R?
  • Làm thế nào để vẽ sơ đồ bộ sưu tập. Biểu đồ bằng cách sử dụng matplotlib?
  • Làm thế nào để vẽ biểu đồ 2D trong matplotlib?
  • Làm thế nào để kiểm soát đường viền của một bản vá thanh trong matplotlib?
  • Làm thế nào để trung tâm nhãn trong biểu đồ biểu đồ matplotlib?
  • Làm thế nào để xác định thứ tự các thanh trong biểu đồ thanh matplotlib?
  • Làm thế nào để hiển thị giá trị ma trận và colormap trong matplotlib?
  • Biểu đồ dọc trong Python và Matplotlib

Trong hướng dẫn này, bạn sẽ được trang bị để tạo ra các biểu đồ Python chất lượng sản xuất, trình bày sẵn sàng trình bày với một loạt các lựa chọn và tính năng.

Nếu bạn đã giới thiệu kiến ​​thức trung gian về Python và thống kê, thì bạn có thể sử dụng bài viết này như một cửa hàng để xây dựng và âm mưu biểu đồ trong Python sử dụng các thư viện từ ngăn xếp khoa học của nó, bao gồm Numpy, Matplotlib, Pandas và Seaborn.

Biểu đồ là một công cụ tuyệt vời để nhanh chóng đánh giá phân phối xác suất được hầu hết các đối tượng hiểu trực giác. Python cung cấp một số ít các tùy chọn khác nhau để xây dựng và vẽ biểu đồ. Hầu hết mọi người đều biết biểu đồ theo biểu diễn đồ họa của nó, tương tự như biểu đồ thanh:

Hướng dẫn show value in histogram python - hiển thị giá trị trong biểu đồ python

Bài viết này sẽ hướng dẫn bạn thông qua việc tạo các lô như phần trên cũng như những bài viết phức tạp hơn. Đây là những gì bạn bao gồm:

  • Xây dựng biểu đồ trong Python thuần túy, không sử dụng thư viện của bên thứ ba
  • Xây dựng biểu đồ với Numpy để tóm tắt dữ liệu cơ bản
  • Âm mưu biểu đồ kết quả với matplotlib, gấu trúc và seeborn

Biểu đồ trong Python thuần túy

Khi bạn đang chuẩn bị vẽ một biểu đồ, việc không nghĩ về các thùng là đơn giản nhất mà là báo cáo bao nhiêu lần mỗi giá trị xuất hiện (một bảng tần số). Một từ điển Python rất phù hợp cho nhiệm vụ này:

>>>

>>> # Need not be sorted, necessarily
>>> a = (0, 1, 1, 1, 2, 3, 7, 7, 23)

>>> def count_elements(seq) -> dict:
...     """Tally elements from `seq`."""
...     hist = {}
...     for i in seq:
...         hist[i] = hist.get(i, 0) + 1
...     return hist

>>> counted = count_elements(a)
>>> counted
{0: 1, 1: 3, 2: 1, 3: 1, 7: 2, 23: 1}

>>> # Need not be sorted, necessarily
>>> a = (0, 1, 1, 1, 2, 3, 7, 7, 23)

>>> def count_elements(seq) -> dict:
...     """Tally elements from `seq`."""
...     hist = {}
...     for i in seq:
...         hist[i] = hist.get(i, 0) + 1
...     return hist

>>> counted = count_elements(a)
>>> counted
{0: 1, 1: 3, 2: 1, 3: 1, 7: 2, 23: 1}
2 trả về một từ điển với các phần tử duy nhất từ ​​chuỗi dưới dạng các khóa và tần số (số đếm) của chúng là giá trị. Trong vòng lặp trên
>>> # Need not be sorted, necessarily
>>> a = (0, 1, 1, 1, 2, 3, 7, 7, 23)

>>> def count_elements(seq) -> dict:
...     """Tally elements from `seq`."""
...     hist = {}
...     for i in seq:
...         hist[i] = hist.get(i, 0) + 1
...     return hist

>>> counted = count_elements(a)
>>> counted
{0: 1, 1: 3, 2: 1, 3: 1, 7: 2, 23: 1}
3,
>>> # Need not be sorted, necessarily
>>> a = (0, 1, 1, 1, 2, 3, 7, 7, 23)

>>> def count_elements(seq) -> dict:
...     """Tally elements from `seq`."""
...     hist = {}
...     for i in seq:
...         hist[i] = hist.get(i, 0) + 1
...     return hist

>>> counted = count_elements(a)
>>> counted
{0: 1, 1: 3, 2: 1, 3: 1, 7: 2, 23: 1}
4 cho biết, đối với mỗi phần tử của chuỗi, tăng giá trị tương ứng của nó trong
>>> # Need not be sorted, necessarily
>>> a = (0, 1, 1, 1, 2, 3, 7, 7, 23)

>>> def count_elements(seq) -> dict:
...     """Tally elements from `seq`."""
...     hist = {}
...     for i in seq:
...         hist[i] = hist.get(i, 0) + 1
...     return hist

>>> counted = count_elements(a)
>>> counted
{0: 1, 1: 3, 2: 1, 3: 1, 7: 2, 23: 1}
5 bởi 1.

Trên thực tế, đây chính xác là những gì được thực hiện bởi lớp

>>> # Need not be sorted, necessarily
>>> a = (0, 1, 1, 1, 2, 3, 7, 7, 23)

>>> def count_elements(seq) -> dict:
...     """Tally elements from `seq`."""
...     hist = {}
...     for i in seq:
...         hist[i] = hist.get(i, 0) + 1
...     return hist

>>> counted = count_elements(a)
>>> counted
{0: 1, 1: 3, 2: 1, 3: 1, 7: 2, 23: 1}
6 từ thư viện tiêu chuẩn Python, trong đó phân lớp từ điển Python và ghi đè phương thức
>>> # Need not be sorted, necessarily
>>> a = (0, 1, 1, 1, 2, 3, 7, 7, 23)

>>> def count_elements(seq) -> dict:
...     """Tally elements from `seq`."""
...     hist = {}
...     for i in seq:
...         hist[i] = hist.get(i, 0) + 1
...     return hist

>>> counted = count_elements(a)
>>> counted
{0: 1, 1: 3, 2: 1, 3: 1, 7: 2, 23: 1}
7 của nó:

>>>

>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})

>>> # Need not be sorted, necessarily
>>> a = (0, 1, 1, 1, 2, 3, 7, 7, 23)

>>> def count_elements(seq) -> dict:
...     """Tally elements from `seq`."""
...     hist = {}
...     for i in seq:
...         hist[i] = hist.get(i, 0) + 1
...     return hist

>>> counted = count_elements(a)
>>> counted
{0: 1, 1: 3, 2: 1, 3: 1, 7: 2, 23: 1}
2 trả về một từ điển với các phần tử duy nhất từ ​​chuỗi dưới dạng các khóa và tần số (số đếm) của chúng là giá trị. Trong vòng lặp trên
>>> # Need not be sorted, necessarily
>>> a = (0, 1, 1, 1, 2, 3, 7, 7, 23)

>>> def count_elements(seq) -> dict:
...     """Tally elements from `seq`."""
...     hist = {}
...     for i in seq:
...         hist[i] = hist.get(i, 0) + 1
...     return hist

>>> counted = count_elements(a)
>>> counted
{0: 1, 1: 3, 2: 1, 3: 1, 7: 2, 23: 1}
3,
>>> # Need not be sorted, necessarily
>>> a = (0, 1, 1, 1, 2, 3, 7, 7, 23)

>>> def count_elements(seq) -> dict:
...     """Tally elements from `seq`."""
...     hist = {}
...     for i in seq:
...         hist[i] = hist.get(i, 0) + 1
...     return hist

>>> counted = count_elements(a)
>>> counted
{0: 1, 1: 3, 2: 1, 3: 1, 7: 2, 23: 1}
4 cho biết, đối với mỗi phần tử của chuỗi, tăng giá trị tương ứng của nó trong
>>> # Need not be sorted, necessarily
>>> a = (0, 1, 1, 1, 2, 3, 7, 7, 23)

>>> def count_elements(seq) -> dict:
...     """Tally elements from `seq`."""
...     hist = {}
...     for i in seq:
...         hist[i] = hist.get(i, 0) + 1
...     return hist

>>> counted = count_elements(a)
>>> counted
{0: 1, 1: 3, 2: 1, 3: 1, 7: 2, 23: 1}
5 bởi 1.

>>>

>>> recounted.items() == counted.items()
True

Nó có thể hữu ích để xây dựng các chức năng đơn giản hóa từ đầu như là bước đầu tiên để hiểu các chức năng phức tạp hơn. Hãy để tiếp tục phát minh lại bánh xe một chút với biểu đồ ASCII tận dụng định dạng đầu ra của Python,:

def ascii_histogram(seq) -> None:
    """A horizontal frequency-table/histogram plot."""
    counted = count_elements(seq)
    for k in sorted(counted):
        print('{0:5d} {1}'.format(k, '+' * counted[k]))

Hàm này tạo ra một biểu đồ tần số được sắp xếp trong đó số lượng được biểu diễn dưới dạng các biểu tượng của Plus (

>>> # Need not be sorted, necessarily
>>> a = (0, 1, 1, 1, 2, 3, 7, 7, 23)

>>> def count_elements(seq) -> dict:
...     """Tally elements from `seq`."""
...     hist = {}
...     for i in seq:
...         hist[i] = hist.get(i, 0) + 1
...     return hist

>>> counted = count_elements(a)
>>> counted
{0: 1, 1: 3, 2: 1, 3: 1, 7: 2, 23: 1}
9). Gọi
>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
0 trên một từ điển trả về một danh sách được sắp xếp các khóa của nó và sau đó bạn truy cập giá trị tương ứng cho mỗi khóa với
>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
1. Để xem điều này trong hành động, bạn có thể tạo một bộ dữ liệu lớn hơn một chút với mô -đun Python, ____32:

>>>

>>> # No NumPy ... yet
>>> import random
>>> random.seed(1)

>>> vals = [1, 3, 4, 6, 8, 9, 10]
>>> # Each number in `vals` will occur between 5 and 15 times.
>>> freq = (random.randint(5, 15) for _ in vals)

>>> data = []
>>> for f, v in zip(freq, vals):
...     data.extend([v] * f)

>>> ascii_histogram(data)
    1 +++++++
    3 ++++++++++++++
    4 ++++++
    6 +++++++++
    8 ++++++
    9 ++++++++++++
   10 ++++++++++++

Ở đây, bạn có thể mô phỏng việc nhổ lông từ

>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
3 với các tần số được cung cấp bởi
>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
4 (một biểu thức máy phát). Dữ liệu mẫu kết quả lặp lại mỗi giá trị từ
>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
3 một số lần nhất định từ 5 đến 15.

Xây dựng từ cơ sở: Tính toán biểu đồ trong Numpy

Cho đến nay, bạn đã làm việc với những gì có thể được gọi là bảng tần số tốt nhất. Nhưng về mặt toán học, một biểu đồ là một ánh xạ các thùng (khoảng) đến tần số. Về mặt kỹ thuật, nó có thể được sử dụng để xấp xỉ hàm mật độ xác suất (PDF) của biến cơ bản.

Di chuyển từ bảng tần số của người Viking ở trên, một biểu đồ thực sự đầu tiên là các thùng rác, phạm vi của các giá trị và sau đó đếm số lượng các giá trị rơi vào mỗi thùng. Đây là những gì chức năng Numpy từ

>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
6 làm, và nó là cơ sở cho các chức năng khác mà bạn sẽ thấy ở đây sau này trong các thư viện Python như Matplotlib và Pandas.

Hãy xem xét một mẫu phao được rút ra từ phân phối Laplace. Phân phối này có đuôi béo hơn so với phân phối bình thường và có hai tham số mô tả (vị trí và tỷ lệ):

>>>

>>> import numpy as np
>>> # `numpy.random` uses its own PRNG.
>>> np.random.seed(444)
>>> np.set_printoptions(precision=3)

>>> d = np.random.laplace(loc=15, scale=3, size=500)
>>> d[:5]
array([18.406, 18.087, 16.004, 16.221,  7.358])

Ở đây, bạn có thể mô phỏng việc nhổ lông từ

>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
3 với các tần số được cung cấp bởi
>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
4 (một biểu thức máy phát). Dữ liệu mẫu kết quả lặp lại mỗi giá trị từ
>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
3 một số lần nhất định từ 5 đến 15.

>>>

>>> hist, bin_edges = np.histogram(d)

>>> hist
array([ 1,  0,  3,  4,  4, 10, 13,  9,  2,  4])

>>> bin_edges
array([ 3.217,  5.199,  7.181,  9.163, 11.145, 13.127, 15.109, 17.091,
       19.073, 21.055, 23.037])

Ở đây, bạn có thể mô phỏng việc nhổ lông từ

>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
3 với các tần số được cung cấp bởi
>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
4 (một biểu thức máy phát). Dữ liệu mẫu kết quả lặp lại mỗi giá trị từ
>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
3 một số lần nhất định từ 5 đến 15.

>>>

>>> hist.size, bin_edges.size
(10, 11)

Ở đây, bạn có thể mô phỏng việc nhổ lông từ

>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
3 với các tần số được cung cấp bởi
>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
4 (một biểu thức máy phát). Dữ liệu mẫu kết quả lặp lại mỗi giá trị từ
>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
3 một số lần nhất định từ 5 đến 15.

>>>

import matplotlib.pyplot as plt

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

data = [3, 5, 1, 7, 9, 5, 3, 7, 5]
_, _, patches = plt.hist(data, align="mid")

for pp in patches:
   x = (pp._x0 + pp._x1)/2
   y = pp._y1 + 0.05
   plt.text(x, y, pp._y1)

plt.show()
0

Ở đây, bạn có thể mô phỏng việc nhổ lông từ

>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
3 với các tần số được cung cấp bởi
>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
4 (một biểu thức máy phát). Dữ liệu mẫu kết quả lặp lại mỗi giá trị từ
>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
3 một số lần nhất định từ 5 đến 15.

Xây dựng từ cơ sở: Tính toán biểu đồ trong Numpy

>>>

import matplotlib.pyplot as plt

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

data = [3, 5, 1, 7, 9, 5, 3, 7, 5]
_, _, patches = plt.hist(data, align="mid")

for pp in patches:
   x = (pp._x0 + pp._x1)/2
   y = pp._y1 + 0.05
   plt.text(x, y, pp._y1)

plt.show()
1

Ở đây, bạn có thể mô phỏng việc nhổ lông từ >>> from collections import Counter >>> recounted = Counter(a) >>> recounted Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1}) 3 với các tần số được cung cấp bởi >>> from collections import Counter >>> recounted = Counter(a) >>> recounted Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1}) 4 (một biểu thức máy phát). Dữ liệu mẫu kết quả lặp lại mỗi giá trị từ >>> from collections import Counter >>> recounted = Counter(a) >>> recounted Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1}) 3 một số lần nhất định từ 5 đến 15.

Xây dựng từ cơ sở: Tính toán biểu đồ trong Numpy

import matplotlib.pyplot as plt

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

data = [3, 5, 1, 7, 9, 5, 3, 7, 5]
_, _, patches = plt.hist(data, align="mid")

for pp in patches:
   x = (pp._x0 + pp._x1)/2
   y = pp._y1 + 0.05
   plt.text(x, y, pp._y1)

plt.show()
2

Hướng dẫn show value in histogram python - hiển thị giá trị trong biểu đồ python

Cho đến nay, bạn đã làm việc với những gì có thể được gọi là bảng tần số tốt nhất. Nhưng về mặt toán học, một biểu đồ là một ánh xạ các thùng (khoảng) đến tần số. Về mặt kỹ thuật, nó có thể được sử dụng để xấp xỉ hàm mật độ xác suất (PDF) của biến cơ bản.

Di chuyển từ bảng tần số của người Viking ở trên, một biểu đồ thực sự đầu tiên là các thùng rác, phạm vi của các giá trị và sau đó đếm số lượng các giá trị rơi vào mỗi thùng. Đây là những gì chức năng Numpy từ

>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
6 làm, và nó là cơ sở cho các chức năng khác mà bạn sẽ thấy ở đây sau này trong các thư viện Python như Matplotlib và Pandas.

import matplotlib.pyplot as plt

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

data = [3, 5, 1, 7, 9, 5, 3, 7, 5]
_, _, patches = plt.hist(data, align="mid")

for pp in patches:
   x = (pp._x0 + pp._x1)/2
   y = pp._y1 + 0.05
   plt.text(x, y, pp._y1)

plt.show()
3

Hướng dẫn show value in histogram python - hiển thị giá trị trong biểu đồ python

Hãy xem xét một mẫu phao được rút ra từ phân phối Laplace. Phân phối này có đuôi béo hơn so với phân phối bình thường và có hai tham số mô tả (vị trí và tỷ lệ):

Trong trường hợp này, bạn đã làm việc với một phân phối liên tục, và nó sẽ rất hữu ích khi kiểm đếm từng chiếc phao một cách độc lập, xuống vị trí thập phân. Thay vào đó, bạn có thể thùng hoặc xô của người dùng dữ liệu và đếm các quan sát rơi vào mỗi thùng. Biểu đồ là số lượng kết quả của các giá trị trong mỗi thùng:

Kết quả này có thể không trực quan ngay lập tức.

>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
7 Theo mặc định sử dụng 10 thùng có kích thước bằng nhau và trả về một bộ số lượng tần số và các cạnh thùng tương ứng. Chúng là các cạnh theo nghĩa là sẽ có một cạnh thùng nhiều hơn so với các thành viên của biểu đồ:

Một sự cố rất cô đọng về cách các thùng được xây dựng bởi Numpy trông như thế này:

Trường hợp trên có rất nhiều ý nghĩa: 10 thùng cách đều nhau trong phạm vi từ cực đại đến đỉnh của 23 khoảng thời gian có chiều rộng 2.3.

>>>

import matplotlib.pyplot as plt

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

data = [3, 5, 1, 7, 9, 5, 3, 7, 5]
_, _, patches = plt.hist(data, align="mid")

for pp in patches:
   x = (pp._x0 + pp._x1)/2
   y = pp._y1 + 0.05
   plt.text(x, y, pp._y1)

plt.show()
4

Từ đó, chức năng ủy quyền cho

>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
8 hoặc
>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
9.
>>> recounted.items() == counted.items()
True
0 có thể được sử dụng để xây dựng hiệu quả bảng tần số mà bạn bắt đầu với ở đây, với sự khác biệt rằng các giá trị có sự xuất hiện bằng không được bao gồm:

import matplotlib.pyplot as plt

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

data = [3, 5, 1, 7, 9, 5, 3, 7, 5]
_, _, patches = plt.hist(data, align="mid")

for pp in patches:
   x = (pp._x0 + pp._x1)/2
   y = pp._y1 + 0.05
   plt.text(x, y, pp._y1)

plt.show()
5

Hướng dẫn show value in histogram python - hiển thị giá trị trong biểu đồ python

Các phương pháp này tận dụng SCIPY từ

>>> recounted.items() == counted.items()
True
9, dẫn đến một bản PDF trông mượt mà hơn.

Nếu bạn xem xét kỹ hơn chức năng này, bạn có thể thấy nó gần đúng mức độ của PDF True True PDF đối với một mẫu tương đối nhỏ gồm 1000 điểm dữ liệu. Dưới đây, trước tiên bạn có thể xây dựng phân phối phân tích trực tuyến với

def ascii_histogram(seq) -> None:
    """A horizontal frequency-table/histogram plot."""
    counted = count_elements(seq)
    for k in sorted(counted):
        print('{0:5d} {1}'.format(k, '+' * counted[k]))
0. Đây là một thể hiện lớp gói đóng gói phân phối bình thường tiêu chuẩn thống kê, khoảnh khắc và các hàm mô tả. PDF của nó là chính xác của nó theo nghĩa là nó được xác định chính xác là
def ascii_histogram(seq) -> None:
    """A horizontal frequency-table/histogram plot."""
    counted = count_elements(seq)
    for k in sorted(counted):
        print('{0:5d} {1}'.format(k, '+' * counted[k]))
1.

Xây dựng từ đó, bạn có thể lấy một mẫu ngẫu nhiên là 1000 datapoints từ phân phối này, sau đó cố gắng quay lại ước tính PDF với

def ascii_histogram(seq) -> None:
    """A horizontal frequency-table/histogram plot."""
    counted = count_elements(seq)
    for k in sorted(counted):
        print('{0:5d} {1}'.format(k, '+' * counted[k]))
2:

import matplotlib.pyplot as plt

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

data = [3, 5, 1, 7, 9, 5, 3, 7, 5]
_, _, patches = plt.hist(data, align="mid")

for pp in patches:
   x = (pp._x0 + pp._x1)/2
   y = pp._y1 + 0.05
   plt.text(x, y, pp._y1)

plt.show()
6

Hướng dẫn show value in histogram python - hiển thị giá trị trong biểu đồ python

Đây là một đoạn mã lớn hơn, vì vậy, hãy để một giây để chạm vào một vài dòng chính:

  • Subpackage SCIPY từ
    def ascii_histogram(seq) -> None:
        """A horizontal frequency-table/histogram plot."""
        counted = count_elements(seq)
        for k in sorted(counted):
            print('{0:5d} {1}'.format(k, '+' * counted[k]))
    
    3 cho phép bạn tạo các đối tượng Python đại diện cho các phân phối phân tích mà bạn có thể lấy mẫu để tạo dữ liệu thực tế. Vì vậy,
    def ascii_histogram(seq) -> None:
        """A horizontal frequency-table/histogram plot."""
        counted = count_elements(seq)
        for k in sorted(counted):
            print('{0:5d} {1}'.format(k, '+' * counted[k]))
    
    4 đại diện cho một biến ngẫu nhiên liên tục thông thường và bạn tạo ra các số ngẫu nhiên từ nó với
    def ascii_histogram(seq) -> None:
        """A horizontal frequency-table/histogram plot."""
        counted = count_elements(seq)
        for k in sorted(counted):
            print('{0:5d} {1}'.format(k, '+' * counted[k]))
    
    5.
  • Để đánh giá cả PDF phân tích và KDE Gaussian, bạn cần một mảng
    def ascii_histogram(seq) -> None:
        """A horizontal frequency-table/histogram plot."""
        counted = count_elements(seq)
        for k in sorted(counted):
            print('{0:5d} {1}'.format(k, '+' * counted[k]))
    
    6 lượng tử (độ lệch chuẩn ở trên/dưới giá trị trung bình, cho phân phối bình thường).
    def ascii_histogram(seq) -> None:
        """A horizontal frequency-table/histogram plot."""
        counted = count_elements(seq)
        for k in sorted(counted):
            print('{0:5d} {1}'.format(k, '+' * counted[k]))
    
    7 đại diện cho một PDF ước tính mà bạn cần đánh giá trên một mảng để tạo ra một cái gì đó có ý nghĩa trực quan trong trường hợp này.
  • Dòng cuối cùng chứa một số latex, tích hợp độc đáo với matplotlib.

Một sự thay thế lạ mắt với Seaborn

Hãy để Lừa mang thêm một gói Python vào hỗn hợp. Seaborn có chức năng

def ascii_histogram(seq) -> None:
    """A horizontal frequency-table/histogram plot."""
    counted = count_elements(seq)
    for k in sorted(counted):
        print('{0:5d} {1}'.format(k, '+' * counted[k]))
8 biểu đồ biểu đồ và KDE cho phân phối đơn biến trong một bước. Sử dụng mảng numpy
def ascii_histogram(seq) -> None:
    """A horizontal frequency-table/histogram plot."""
    counted = count_elements(seq)
    for k in sorted(counted):
        print('{0:5d} {1}'.format(k, '+' * counted[k]))
9 từ Ealier:

import matplotlib.pyplot as plt

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

data = [3, 5, 1, 7, 9, 5, 3, 7, 5]
_, _, patches = plt.hist(data, align="mid")

for pp in patches:
   x = (pp._x0 + pp._x1)/2
   y = pp._y1 + 0.05
   plt.text(x, y, pp._y1)

plt.show()
7

Hướng dẫn show value in histogram python - hiển thị giá trị trong biểu đồ python

Cuộc gọi ở trên tạo ra một KDE. Ngoài ra còn có tính tùy chọn để phù hợp với một phân phối cụ thể cho dữ liệu. Điều này khác với KDE và bao gồm ước tính tham số cho dữ liệu chung và tên phân phối được chỉ định:

import matplotlib.pyplot as plt

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

data = [3, 5, 1, 7, 9, 5, 3, 7, 5]
_, _, patches = plt.hist(data, align="mid")

for pp in patches:
   x = (pp._x0 + pp._x1)/2
   y = pp._y1 + 0.05
   plt.text(x, y, pp._y1)

plt.show()
8

Hướng dẫn show value in histogram python - hiển thị giá trị trong biểu đồ python

Một lần nữa, lưu ý sự khác biệt nhỏ. Trong trường hợp đầu tiên, bạn đã ước tính một số PDF không xác định; Trong lần thứ hai, bạn đã lấy một phân phối đã biết và tìm ra những tham số mô tả tốt nhất nó được cung cấp dữ liệu thực nghiệm.

Các công cụ khác trong gấu trúc

Ngoài các công cụ vẽ đồ thị, Pandas cũng cung cấp một phương thức

>>> # No NumPy ... yet
>>> import random
>>> random.seed(1)

>>> vals = [1, 3, 4, 6, 8, 9, 10]
>>> # Each number in `vals` will occur between 5 and 15 times.
>>> freq = (random.randint(5, 15) for _ in vals)

>>> data = []
>>> for f, v in zip(freq, vals):
...     data.extend([v] * f)

>>> ascii_histogram(data)
    1 +++++++
    3 ++++++++++++++
    4 ++++++
    6 +++++++++
    8 ++++++
    9 ++++++++++++
   10 ++++++++++++
0 thuận tiện để tính toán biểu đồ của các giá trị không null cho gấu trúc
>>> recounted.items() == counted.items()
True
7:

>>>

import matplotlib.pyplot as plt

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

data = [3, 5, 1, 7, 9, 5, 3, 7, 5]
_, _, patches = plt.hist(data, align="mid")

for pp in patches:
   x = (pp._x0 + pp._x1)/2
   y = pp._y1 + 0.05
   plt.text(x, y, pp._y1)

plt.show()
9

Ở những nơi khác,

>>> # No NumPy ... yet
>>> import random
>>> random.seed(1)

>>> vals = [1, 3, 4, 6, 8, 9, 10]
>>> # Each number in `vals` will occur between 5 and 15 times.
>>> freq = (random.randint(5, 15) for _ in vals)

>>> data = []
>>> for f, v in zip(freq, vals):
...     data.extend([v] * f)

>>> ascii_histogram(data)
    1 +++++++
    3 ++++++++++++++
    4 ++++++
    6 +++++++++
    8 ++++++
    9 ++++++++++++
   10 ++++++++++++
2 là một cách thuận tiện để các giá trị thùng thành các khoảng thời gian tùy ý. Hãy nói rằng bạn có một số dữ liệu về độ tuổi của các cá nhân và muốn xô chúng một cách hợp lý:

>>>

>>> # Need not be sorted, necessarily
>>> a = (0, 1, 1, 1, 2, 3, 7, 7, 23)

>>> def count_elements(seq) -> dict:
...     """Tally elements from `seq`."""
...     hist = {}
...     for i in seq:
...         hist[i] = hist.get(i, 0) + 1
...     return hist

>>> counted = count_elements(a)
>>> counted
{0: 1, 1: 3, 2: 1, 3: 1, 7: 2, 23: 1}
0

Ở những nơi khác,

>>> # No NumPy ... yet
>>> import random
>>> random.seed(1)

>>> vals = [1, 3, 4, 6, 8, 9, 10]
>>> # Each number in `vals` will occur between 5 and 15 times.
>>> freq = (random.randint(5, 15) for _ in vals)

>>> data = []
>>> for f, v in zip(freq, vals):
...     data.extend([v] * f)

>>> ascii_histogram(data)
    1 +++++++
    3 ++++++++++++++
    4 ++++++
    6 +++++++++
    8 ++++++
    9 ++++++++++++
   10 ++++++++++++
2 là một cách thuận tiện để các giá trị thùng thành các khoảng thời gian tùy ý. Hãy nói rằng bạn có một số dữ liệu về độ tuổi của các cá nhân và muốn xô chúng một cách hợp lý:

Điều mà tốt đẹp là cả hai hoạt động này cuối cùng sử dụng mã Cython giúp chúng cạnh tranh về tốc độ trong khi duy trì tính linh hoạt của chúng.

Được rồi, vậy tôi nên sử dụng cái nào?

Tại thời điểm này, bạn đã thấy nhiều hơn một số hàm và phương pháp để lựa chọn để vẽ biểu đồ Python. Làm thế nào để họ so sánh? Nói tóm lại, không có một kích cỡ phù hợp với một kích cỡ nào. Ở đây, một bản tóm tắt về các chức năng và phương thức mà bạn đã đề cập cho đến nay, tất cả đều liên quan đến việc phá vỡ và đại diện cho các phân phối trong Python:Bạn có/muốnNote(s)
Xem xét sử dụngDữ liệu số nguyên cắt sạch được đặt trong một cấu trúc dữ liệu như danh sách, tuple hoặc bộ và bạn muốn tạo biểu đồ Python mà không cần nhập bất kỳ thư viện bên thứ ba nào.
>>> # No NumPy ... yet
>>> import random
>>> random.seed(1)

>>> vals = [1, 3, 4, 6, 8, 9, 10]
>>> # Each number in `vals` will occur between 5 and 15 times.
>>> freq = (random.randint(5, 15) for _ in vals)

>>> data = []
>>> for f, v in zip(freq, vals):
...     data.extend([v] * f)

>>> ascii_histogram(data)
    1 +++++++
    3 ++++++++++++++
    4 ++++++
    6 +++++++++
    8 ++++++
    9 ++++++++++++
   10 ++++++++++++
3 từ Thư viện tiêu chuẩn Python cung cấp một cách nhanh chóng và đơn giản để có được số lượng tần số từ một thùng chứa dữ liệu.
Đây là một bảng tần số, vì vậy nó không sử dụng khái niệm về Binning như một biểu đồ thực sự của người Viking.Mảng dữ liệu lớn và bạn muốn tính toán biểu đồ toán học của người Viking đại diện cho các thùng và tần số tương ứng.Numpy từ
>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
7 và
>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
8 rất hữu ích cho việc tính toán các giá trị biểu đồ bằng số và các cạnh bin tương ứng.
Để biết thêm, hãy kiểm tra
>>> # No NumPy ... yet
>>> import random
>>> random.seed(1)

>>> vals = [1, 3, 4, 6, 8, 9, 10]
>>> # Each number in `vals` will occur between 5 and 15 times.
>>> freq = (random.randint(5, 15) for _ in vals)

>>> data = []
>>> for f, v in zip(freq, vals):
...     data.extend([v] * f)

>>> ascii_histogram(data)
    1 +++++++
    3 ++++++++++++++
    4 ++++++
    6 +++++++++
    8 ++++++
    9 ++++++++++++
   10 ++++++++++++
6.
Dữ liệu dạng bảng trong đối tượng Pandas,
>>> recounted.items() == counted.items()
True
7 hoặc
>>> recounted.items() == counted.items()
True
8.
Các phương pháp gấu trúc như
>>> # No NumPy ... yet
>>> import random
>>> random.seed(1)

>>> vals = [1, 3, 4, 6, 8, 9, 10]
>>> # Each number in `vals` will occur between 5 and 15 times.
>>> freq = (random.randint(5, 15) for _ in vals)

>>> data = []
>>> for f, v in zip(freq, vals):
...     data.extend([v] * f)

>>> ascii_histogram(data)
    1 +++++++
    3 ++++++++++++++
    4 ++++++
    6 +++++++++
    8 ++++++
    9 ++++++++++++
   10 ++++++++++++
9,
>>> import numpy as np
>>> # `numpy.random` uses its own PRNG.
>>> np.random.seed(444)
>>> np.set_printoptions(precision=3)

>>> d = np.random.laplace(loc=15, scale=3, size=500)
>>> d[:5]
array([18.406, 18.087, 16.004, 16.221,  7.358])
0,
>>> import numpy as np
>>> # `numpy.random` uses its own PRNG.
>>> np.random.seed(444)
>>> np.set_printoptions(precision=3)

>>> d = np.random.laplace(loc=15, scale=3, size=500)
>>> d[:5]
array([18.406, 18.087, 16.004, 16.221,  7.358])
1 và
>>> import numpy as np
>>> # `numpy.random` uses its own PRNG.
>>> np.random.seed(444)
>>> np.set_printoptions(precision=3)

>>> d = np.random.laplace(loc=15, scale=3, size=500)
>>> d[:5]
array([18.406, 18.087, 16.004, 16.221,  7.358])
2, cũng như
>>> import numpy as np
>>> # `numpy.random` uses its own PRNG.
>>> np.random.seed(444)
>>> np.set_printoptions(precision=3)

>>> d = np.random.laplace(loc=15, scale=3, size=500)
>>> d[:5]
array([18.406, 18.087, 16.004, 16.221,  7.358])
3 và
>>> import numpy as np
>>> # `numpy.random` uses its own PRNG.
>>> np.random.seed(444)
>>> np.set_printoptions(precision=3)

>>> d = np.random.laplace(loc=15, scale=3, size=500)
>>> d[:5]
array([18.406, 18.087, 16.004, 16.221,  7.358])
4.
Kiểm tra các tài liệu trực quan về gấu trúc để lấy cảm hứng.Tạo một cốt truyện được tùy biến cao, tinh chỉnh từ bất kỳ cấu trúc dữ liệu nào.
>>> import numpy as np
>>> # `numpy.random` uses its own PRNG.
>>> np.random.seed(444)
>>> np.set_printoptions(precision=3)

>>> d = np.random.laplace(loc=15, scale=3, size=500)
>>> d[:5]
array([18.406, 18.087, 16.004, 16.221,  7.358])
5 là một hàm âm mưu biểu đồ được sử dụng rộng rãi sử dụng
>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
7 và là cơ sở cho các chức năng âm mưu của Pandas.
Matplotlib, và đặc biệt là khung hướng đối tượng của nó, là tuyệt vời để tinh chỉnh các chi tiết của một biểu đồ. Giao diện này có thể mất một chút thời gian để làm chủ, nhưng cuối cùng cho phép bạn rất chính xác trong cách thức trực quan hóa được đặt ra.Thiết kế và tích hợp trước.Seaborn từ
>>> import numpy as np
>>> # `numpy.random` uses its own PRNG.
>>> np.random.seed(444)
>>> np.set_printoptions(precision=3)

>>> d = np.random.laplace(loc=15, scale=3, size=500)
>>> d[:5]
array([18.406, 18.087, 16.004, 16.221,  7.358])
7, để kết hợp biểu đồ và biểu đồ KDE hoặc vẽ đồ thị phù hợp với phân phối.

Bạn cũng có thể tìm thấy các đoạn mã từ bài viết này cùng nhau trong một tập lệnh tại trang Vật liệu Python thực.

Với điều đó, chúc may mắn tạo ra biểu đồ trong tự nhiên. Hy vọng một trong những công cụ trên sẽ phù hợp với nhu cầu của bạn. Dù bạn làm gì, chỉ cần don sử dụng biểu đồ hình tròn.

Làm thế nào để bạn hiển thị một giá trị trong một biểu đồ trong Python?

Đặt kích thước hình và điều chỉnh phần đệm giữa và xung quanh các ô phụ ..
Lập danh sách các số để lập biểu đồ biểu đồ ..
Sử dụng phương pháp hist () để tạo biểu đồ ..
Lặp lại các bản vá và tính toán giá trị trung bình của mỗi bản vá và chiều cao của bản vá để đặt một văn bản ..
Để hiển thị hình, sử dụng phương thức show () ..

Làm thế nào để bạn vẽ một dòng trên biểu đồ trong Python?

Nhận dữ liệu cho x bằng một số phương trình, đặt num_bins = 50 ..
Tạo các biến FIG và AX bằng phương thức Subplots, trong đó NROW và NCOL mặc định là 1 ..
Nhận n, thùng, các bản vá giá trị bằng AX. ....
Sơ đồ các dòng trung bình sử dụng dữ liệu thùng và y thu được từ một số phương trình ..
Đặt nhãn trục x bằng PLT ..

Làm cách nào để hiển thị biểu đồ trong matplotlib?

Trong matplotlib, chúng tôi sử dụng hàm hist () để tạo biểu đồ.Hàm Hist () sẽ sử dụng một mảng các số để tạo biểu đồ, mảng được gửi vào hàm làm đối số.use the hist() function to create histograms. The hist() function will use an array of numbers to create a histogram, the array is sent into the function as an argument.

Bin trong biểu đồ python là gì?

Nó là một loại biểu đồ thanh.Để xây dựng một biểu đồ, bước đầu tiên là về Bin bin, phạm vi của các giá trị - nghĩa là chia toàn bộ phạm vi giá trị thành một loạt các khoảng - và sau đó đếm số lượng giá trị rơi vào mỗi khoảng.Các thùng thường được chỉ định là các khoảng liên tiếp, không chồng chéo của một biến.the range of values — that is, divide the entire range of values into a series of intervals — and then count how many values fall into each interval. The bins are usually specified as consecutive, non-overlapping intervals of a variable.