Hướng dẫn which function is used to draw histogram in python? - chức năng nào được sử dụng để vẽ biểu đồ trong python?

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 which function is used to draw histogram in python? - chức năng nào được sử dụng để vẽ biểu đồ trong 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}

>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
9 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ố (tính) của chúng là giá trị. Trong vòng lặp trên
>>> recounted.items() == counted.items()
True
0,
>>> recounted.items() == counted.items()
True
1 nói, Đối với mỗi phần tử của chuỗi, tăng giá trị tương ứng của nó trong
>>> recounted.items() == counted.items()
True
2 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

>>> recounted.items() == counted.items()
True
3 từ thư viện tiêu chuẩn Python, trong đó phân lớp từ điển Python và ghi đè phương thức
>>> recounted.items() == counted.items()
True
4 của nó:

>>>

>>> from collections import Counter

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

>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
9 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ố (tính) của chúng là giá trị. Trong vòng lặp trên
>>> recounted.items() == counted.items()
True
0,
>>> recounted.items() == counted.items()
True
1 nói, Đối với mỗi phần tử của chuỗi, tăng giá trị tương ứng của nó trong
>>> recounted.items() == counted.items()
True
2 bởi 1.

>>>

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

>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
9 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ố (tính) của chúng là giá trị. Trong vòng lặp trên
>>> recounted.items() == counted.items()
True
0,
>>> recounted.items() == counted.items()
True
1 nói, Đối với mỗi phần tử của chuỗi, tăng giá trị tương ứng của nó trong
>>> recounted.items() == counted.items()
True
2 bởi 1.

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]))

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

>>> recounted.items() == counted.items()
True
3 từ thư viện tiêu chuẩn Python, trong đó phân lớp từ điển Python và ghi đè phương thức
>>> recounted.items() == counted.items()
True
4 của nó:

>>>

>>> # 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 ++++++++++++

>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
9 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ố (tính) của chúng là giá trị. Trong vòng lặp trên
>>> recounted.items() == counted.items()
True
0,
>>> recounted.items() == counted.items()
True
1 nói, Đối với mỗi phần tử của chuỗi, tăng giá trị tương ứng của nó trong
>>> recounted.items() == counted.items()
True
2 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 >>> recounted.items() == counted.items() True 3 từ thư viện tiêu chuẩn Python, trong đó phân lớp từ điển Python và ghi đè phương thức >>> recounted.items() == counted.items() True 4 của nó:

Bạn có thể xác nhận rằng chức năng thủ công của bạn làm hầu như giống như

>>> recounted.items() == counted.items()
True
3 bằng cách kiểm tra sự bình đẳng giữa hai:

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,:

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 (

>>> recounted.items() == counted.items()
True
6). Gọi
>>> recounted.items() == counted.items()
True
7 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
>>> recounted.items() == counted.items()
True
8. Để 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, ____29:

>>>

>>> 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])

>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
9 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ố (tính) của chúng là giá trị. Trong vòng lặp trên
>>> recounted.items() == counted.items()
True
0,
>>> recounted.items() == counted.items()
True
1 nói, Đối với mỗi phần tử của chuỗi, tăng giá trị tương ứng của nó trong
>>> recounted.items() == counted.items()
True
2 bởi 1.

>>>

>>> 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])

>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
9 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ố (tính) của chúng là giá trị. Trong vòng lặp trên
>>> recounted.items() == counted.items()
True
0,
>>> recounted.items() == counted.items()
True
1 nói, Đối với mỗi phần tử của chuỗi, tăng giá trị tương ứng của nó trong
>>> recounted.items() == counted.items()
True
2 bởi 1.

>>>

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

>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
9 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ố (tính) của chúng là giá trị. Trong vòng lặp trên
>>> recounted.items() == counted.items()
True
0,
>>> recounted.items() == counted.items()
True
1 nói, Đối với mỗi phần tử của chuỗi, tăng giá trị tương ứng của nó trong
>>> recounted.items() == counted.items()
True
2 bởi 1.

>>>

>>> # The leftmost and rightmost bin edges
>>> first_edge, last_edge = a.min(), a.max()

>>> n_equal_bins = 10  # NumPy's default
>>> bin_edges = np.linspace(start=first_edge, stop=last_edge,
...                         num=n_equal_bins + 1, endpoint=True)
...
>>> bin_edges
array([ 0. ,  2.3,  4.6,  6.9,  9.2, 11.5, 13.8, 16.1, 18.4, 20.7, 23. ])

>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
9 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ố (tính) của chúng là giá trị. Trong vòng lặp trên
>>> recounted.items() == counted.items()
True
0,
>>> recounted.items() == counted.items()
True
1 nói, Đối với mỗi phần tử của chuỗi, tăng giá trị tương ứng của nó trong
>>> recounted.items() == counted.items()
True
2 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

>>> recounted.items() == counted.items()
True
3 từ thư viện tiêu chuẩn Python, trong đó phân lớp từ điển Python và ghi đè phương thức
>>> recounted.items() == counted.items()
True
4 của nó:

>>>

>>> bcounts = np.bincount(a)
>>> hist, _ = np.histogram(a, range=(0, a.max()), bins=a.max() + 1)

>>> np.array_equal(hist, bcounts)
True

>>> # Reproducing `collections.Counter`
>>> dict(zip(np.unique(a), bcounts[bcounts.nonzero()]))
{0: 1, 1: 3, 2: 1, 3: 1, 7: 2, 23: 1}

Hình dung biểu đồ với matplotlib và gấu trúc

Bây giờ, bạn đã thấy cách xây dựng một biểu đồ trong Python từ đầu, hãy để xem các gói Python khác có thể thực hiện công việc cho bạn như thế nào. Matplotlib cung cấp chức năng để trực quan hóa biểu đồ python ra khỏi hộp với một trình bao bọc đa năng xung quanh Numpy tựa

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:

>>> from collections import Counter

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

Hướng dẫn which function is used to draw histogram in python? - chức năng nào được sử dụng để vẽ biểu đồ trong python?

Như đã định nghĩa trước đó, một biểu đồ của biểu đồ sử dụng các cạnh bin của nó trên trục x và tần số tương ứng trên trục y. Trong biểu đồ trên, việc vượt qua

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 đã chọn giữa hai thuật toán để ước tính số lượng thùng lý tưởng của người Viking. Ở cấp độ cao, mục tiêu của thuật toán là chọn một chiều rộng bin tạo ra biểu diễn trung thực nhất của dữ liệu. Để biết thêm về chủ đề này, có thể nhận được khá kỹ thuật, hãy kiểm tra chọn các thùng biểu đồ từ các tài liệu Astropy.

Ở trong ngăn xếp khoa học của Python, Pandas,

>>> # 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 sử dụng
>>> # 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 ++++++++++++
1 để vẽ biểu đồ matplotlib của chuỗi đầu vào:

>>> from collections import Counter

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

Hướng dẫn which function is used to draw histogram in python? - chức năng nào được sử dụng để vẽ biểu đồ trong python?

>>> # 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à tương tự nhưng tạo ra một biểu đồ cho mỗi cột dữ liệu trong DataFrame.

Sơ đồ ước tính mật độ hạt nhân (KDE)

Trong hướng dẫn này, bạn đã làm việc với các mẫu, nói về mặt thống kê. Cho dù dữ liệu là rời rạc hay liên tục, nó được cho là có nguồn gốc từ một dân số có phân phối chính xác, chính xác được mô tả chỉ bằng một vài tham số.

Ước tính mật độ kernel (KDE) là một cách để ước tính hàm mật độ xác suất (PDF) của biến ngẫu nhiên mà cách làm nền tảng cho mẫu của chúng tôi. KDE là một phương tiện làm mịn dữ liệu.

Gắn bó với thư viện PANDAS, bạn có thể tạo và phủ các sơ đồ mật độ bằng cách sử dụng

>>> # 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, có sẵn cho cả các đối tượng
>>> # 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 ++++++++++++
4 và
>>> # 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 ++++++++++++
5. Nhưng trước tiên, hãy để tạo ra hai mẫu dữ liệu riêng biệt để so sánh:

>>>

>>> from collections import Counter

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

Bây giờ, để vẽ từng biểu đồ trên cùng một trục matplotlib:

>>> from collections import Counter

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

Hướng dẫn which function is used to draw histogram in python? - chức năng nào được sử dụng để vẽ biểu đồ trong python?

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

>>> # 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ẫ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

>>> # 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 ++++++++++++
7. Đâ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à
>>> # 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 ++++++++++++
8.

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

>>> # 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:

>>> from collections import Counter

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

Hướng dẫn which function is used to draw histogram in python? - chức năng nào được sử dụng để vẽ biểu đồ trong 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ừ
    >>> 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 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,
    >>> 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 đạ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
    >>> 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.
  • Để đánh giá cả PDF phân tích và KDE Gaussian, bạn cần một mảng
    >>> 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 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).
    >>> 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 thể hiện 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

>>> 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 biểu đồ biểu đồ và KDE để phân phối đơn biến trong một bước. Sử dụng mảng numpy
>>> 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])
6 từ Ealier:

>>> from collections import Counter

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

Hướng dẫn which function is used to draw histogram in python? - chức năng nào được sử dụng để vẽ biểu đồ trong 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:

>>> from collections import Counter

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

Hướng dẫn which function is used to draw histogram in python? - chức năng nào được sử dụng để vẽ biểu đồ trong 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ụ âm mưu của nó, Pandas cũng cung cấp một phương thức

>>> 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 thuận tiện để tính toán biểu đồ của các giá trị không null cho gấu trú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 ++++++++++++
4:

>>>

>>> from collections import Counter

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

Ở những nơi khác,

>>> 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])
9 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ý:

>>>

>>> from collections import Counter

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

Đ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ốnXem xét sử dụngNote(s)
Dữ 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.
>>> 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])
0 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ừ
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 và
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 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
>>> 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])
3.
Dữ liệu dạng bảng trong đối tượng Pandas,
>>> # 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 ++++++++++++
4 hoặ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 ++++++++++++
5.
Các phương pháp gấu trúc như
>>> 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])
6,
>>> 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])
7,
>>> 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])
8 và
>>> 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])
9, cũng như
>>> hist.size, bin_edges.size
(10, 11)
0 và
>>> hist.size, bin_edges.size
(10, 11)
1.
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.
>>> hist.size, bin_edges.size
(10, 11)
2 là một hàm âm mưu biểu đồ được sử dụng rộng rãi sử dụ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]))
4 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ừ
>>> hist.size, bin_edges.size
(10, 11)
4, để kết hợp biểu đồ và biểu đồ KDE hoặc vẽ đồ thị phù hợp với phân phối.
Về cơ bản, một trình bao bọc của người Viking xung quanh một trình bao bọc, tận dụng một biểu đồ matplotlib bên trong, từ đó sử dụng Numpy.

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 chúng ta có thể vẽ một biểu đồ python?

Để tạo biểu đồ, bước đầu tiên là tạo thùng của các phạm vi, sau đó phân phối toàn bộ phạm vi của các giá trị thành một loạt các khoảng và đếm các giá trị rơi vào mỗi khoảng thời gian. Các thùng được xác định rõ ràng là các khoảng liên tiếp, không chồng chéo của các biến. Các matplotlib. pyplot.create bin of the ranges, then distribute the whole range of the values into a series of intervals, and count the values which fall into each of the intervals. Bins are clearly identified as consecutive, non-overlapping intervals of variables. The matplotlib. pyplot.

Hàm biểu đồ trong Python là gì?

Biểu đồ là số lượng kết quả của các giá trị trong mỗi thùng: >>> >>> hist, bin_edges = np.Biểu đồ (d) >>> mảng hist ([1, 0, 3, 4, 4, 10, 13, 9, 2, 4]) >>> mảng bin_edges ([3.217, 5.199, 7.181, 9.163, 11.145, 13.127, 15.109, 17.091, 19.073, 21.055, 23.037])the resulting count of values within each bin: >>> >>> 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])

Làm thế nào để bạn tạo một biểu đồ từ một tập dữ liệu trong Python?

Để tạo biểu đồ trong Python bằng matplotlib, bạn có thể sử dụng hàm hist ().Hàm Hist này có một số đối số, chính là đối số Bins, trong đó chỉ định số lượng thùng có chiều rộng bằng nhau trong phạm vi.use the hist() function. This hist function takes a number of arguments, the key one being the bins argument, which specifies the number of equal-width bins in the range.

Làm thế nào để bạn gọi một biểu đồ trong Python?

Các bước để vẽ một biểu đồ trong Python bằng cách sử dụng matplotlib..
Bước 1: Cài đặt gói matplotlib.....
Bước 2: Thu thập dữ liệu cho biểu đồ.....
Bước 3: Xác định số lượng thùng.....
Bước 4: Vẽ biểu đồ trong Python bằng cách sử dụng matplotlib ..