Hướng dẫn how do you make a histogram line in python? - làm thế nào để bạn tạo một dòng biểu đồ trong python?

25

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi cần tạo một biểu đồ biểu thị một dòng và không phải là một bước hoặc biểu đồ thanh. Tôi đang sử dụng Python 2.7 Chức năng plt.hist bên dưới biểu thị một dòng bước và các thùng không xếp hàng trong hàm plt.plot.

import matplotlib.pyplot as plt
import numpy as np
noise = np.random.normal(0,1,(1000,1))
(n,x,_) = plt.hist(noise, bins = np.linspace(-3,3,7), histtype=u'step' )  
plt.plot(x[:-1],n)

Tôi cần dòng để tương quan với số lượng của mỗi thùng tại các trung tâm bin như thể có cờ histtype = u'line 'để đi với ALIGN = U'MID' FLAG

Hỏi ngày 10 tháng 1 năm 2015 lúc 3:56Jan 10, 2015 at 3:56

Hướng dẫn how do you make a histogram line in python? - làm thế nào để bạn tạo một dòng biểu đồ trong python?

DangoodrickdangoodrickDanGoodrick

2.5285 Huy hiệu vàng26 Huy hiệu bạc 50 Huy hiệu Đồng5 gold badges26 silver badges50 bronze badges

1

Sử dụng SCIPY, bạn có thể sử dụng

noise = np.random.normal(0,1,(1000,1))
n,x,_ = plt.hist(noise, bins = np.linspace(-3,3,7), histtype=u'step' )
bin_centers = 0.5*(x[1:]+x[:-1])
plt.plot(bin_centers,n) ## using bin_centers rather than edges
plt.show()
3 để ước tính hàm mật độ xác suất:

import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as stats

noise = np.random.normal(0, 1, (1000, ))
density = stats.gaussian_kde(noise)
n, x, _ = plt.hist(noise, bins=np.linspace(-3, 3, 50), 
                   histtype=u'step', density=True)  
plt.plot(x, density(x))
plt.show()

Hướng dẫn how do you make a histogram line in python? - làm thế nào để bạn tạo một dòng biểu đồ trong python?

Không

2.7303 huy hiệu vàng22 Huy hiệu bạc55 Huy hiệu Đồng3 gold badges22 silver badges55 bronze badges

Đã trả lời ngày 10 tháng 1 năm 2015 lúc 4:12Jan 10, 2015 at 4:12

UnutbuUnutbuunutbu

799K172 Huy hiệu vàng1724 Huy hiệu bạc1624 Huy hiệu đồng172 gold badges1724 silver badges1624 bronze badges

4

Biểu đồ dòng bạn đang sản xuất không xếp hàng vì các giá trị X đang được sử dụng là các cạnh bin. Bạn có thể tính toán các trung tâm bin như sau:

noise = np.random.normal(0,1,(1000,1))
n,x,_ = plt.hist(noise, bins = np.linspace(-3,3,7), histtype=u'step' )
bin_centers = 0.5*(x[1:]+x[:-1])
plt.plot(bin_centers,n) ## using bin_centers rather than edges
plt.show()
4 Sau đó, mã hoàn chỉnh sẽ là:

noise = np.random.normal(0,1,(1000,1))
n,x,_ = plt.hist(noise, bins = np.linspace(-3,3,7), histtype=u'step' )
bin_centers = 0.5*(x[1:]+x[:-1])
plt.plot(bin_centers,n) ## using bin_centers rather than edges
plt.show()

Nếu bạn muốn cốt truyện được điền vào y = 0 thì hãy sử dụng

noise = np.random.normal(0,1,(1000,1))
n,x,_ = plt.hist(noise, bins = np.linspace(-3,3,7), histtype=u'step' )
bin_centers = 0.5*(x[1:]+x[:-1])
plt.plot(bin_centers,n) ## using bin_centers rather than edges
plt.show()
5
Hướng dẫn how do you make a histogram line in python? - làm thế nào để bạn tạo một dòng biểu đồ trong python?

Đã trả lời ngày 20 tháng 3 năm 2018 lúc 16:11Mar 20, 2018 at 16:11

Hướng dẫn how do you make a histogram line in python? - làm thế nào để bạn tạo một dòng biểu đồ trong python?

MattbmattbMattB

5003 Huy hiệu bạc12 Huy hiệu Đồng3 silver badges12 bronze badges

Bộ sưu tập hình thu nhỏ của Matplotlib thường khá hữu ích trong các tình huống như của bạn. Một sự kết hợp của điều này và cái này từ bộ sưu tập với một số tùy chỉnh có lẽ rất gần với những gì bạn có trong tâm trí:

import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt

mu = 0
sigma = 1
noise = np.random.normal(mu, sigma, size=1000)
num_bins = 7
n, bins, _ = plt.hist(noise, num_bins, normed=1, histtype='step')
y = mlab.normpdf(bins, mu, sigma)
plt.plot(bins, y, 'r--')
plt.show()

Hướng dẫn how do you make a histogram line in python? - làm thế nào để bạn tạo một dòng biểu đồ trong python?

Ngoài ra, tăng số lượng thùng giúp ...

Hướng dẫn how do you make a histogram line in python? - làm thế nào để bạn tạo một dòng biểu đồ trong python?

Đã trả lời ngày 10 tháng 1 năm 2015 lúc 5:20Jan 10, 2015 at 5:20

Mtymtymty

7506 Huy hiệu bạc15 Huy hiệu Đồng6 silver badges15 bronze badges

1

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 how do you make a histogram line in python? - làm thế nào để bạn tạo một dòng 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}

noise = np.random.normal(0,1,(1000,1))
n,x,_ = plt.hist(noise, bins = np.linspace(-3,3,7), histtype=u'step' )
bin_centers = 0.5*(x[1:]+x[:-1])
plt.plot(bin_centers,n) ## using bin_centers rather than edges
plt.show()
6 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
noise = np.random.normal(0,1,(1000,1))
n,x,_ = plt.hist(noise, bins = np.linspace(-3,3,7), histtype=u'step' )
bin_centers = 0.5*(x[1:]+x[:-1])
plt.plot(bin_centers,n) ## using bin_centers rather than edges
plt.show()
7,
noise = np.random.normal(0,1,(1000,1))
n,x,_ = plt.hist(noise, bins = np.linspace(-3,3,7), histtype=u'step' )
bin_centers = 0.5*(x[1:]+x[:-1])
plt.plot(bin_centers,n) ## using bin_centers rather than edges
plt.show()
8 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
noise = np.random.normal(0,1,(1000,1))
n,x,_ = plt.hist(noise, bins = np.linspace(-3,3,7), histtype=u'step' )
bin_centers = 0.5*(x[1:]+x[:-1])
plt.plot(bin_centers,n) ## using bin_centers rather than edges
plt.show()
9 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

import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt

mu = 0
sigma = 1
noise = np.random.normal(mu, sigma, size=1000)
num_bins = 7
n, bins, _ = plt.hist(noise, num_bins, normed=1, histtype='step')
y = mlab.normpdf(bins, mu, sigma)
plt.plot(bins, y, 'r--')
plt.show()
0 từ Thư viện tiêu chuẩn Python, trong đó phân lớp từ điển Python và ghi đè phương thức
import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt

mu = 0
sigma = 1
noise = np.random.normal(mu, sigma, size=1000)
num_bins = 7
n, bins, _ = plt.hist(noise, num_bins, normed=1, histtype='step')
y = mlab.normpdf(bins, mu, sigma)
plt.plot(bins, y, 'r--')
plt.show()
1 của nó:

>>>

>>> from collections import Counter

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

noise = np.random.normal(0,1,(1000,1))
n,x,_ = plt.hist(noise, bins = np.linspace(-3,3,7), histtype=u'step' )
bin_centers = 0.5*(x[1:]+x[:-1])
plt.plot(bin_centers,n) ## using bin_centers rather than edges
plt.show()
6 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
noise = np.random.normal(0,1,(1000,1))
n,x,_ = plt.hist(noise, bins = np.linspace(-3,3,7), histtype=u'step' )
bin_centers = 0.5*(x[1:]+x[:-1])
plt.plot(bin_centers,n) ## using bin_centers rather than edges
plt.show()
7,
noise = np.random.normal(0,1,(1000,1))
n,x,_ = plt.hist(noise, bins = np.linspace(-3,3,7), histtype=u'step' )
bin_centers = 0.5*(x[1:]+x[:-1])
plt.plot(bin_centers,n) ## using bin_centers rather than edges
plt.show()
8 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
noise = np.random.normal(0,1,(1000,1))
n,x,_ = plt.hist(noise, bins = np.linspace(-3,3,7), histtype=u'step' )
bin_centers = 0.5*(x[1:]+x[:-1])
plt.plot(bin_centers,n) ## using bin_centers rather than edges
plt.show()
9 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 (

import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt

mu = 0
sigma = 1
noise = np.random.normal(mu, sigma, size=1000)
num_bins = 7
n, bins, _ = plt.hist(noise, num_bins, normed=1, histtype='step')
y = mlab.normpdf(bins, mu, sigma)
plt.plot(bins, y, 'r--')
plt.show()
3). Gọi
import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt

mu = 0
sigma = 1
noise = np.random.normal(mu, sigma, size=1000)
num_bins = 7
n, bins, _ = plt.hist(noise, num_bins, normed=1, histtype='step')
y = mlab.normpdf(bins, mu, sigma)
plt.plot(bins, y, 'r--')
plt.show()
4 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
import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt

mu = 0
sigma = 1
noise = np.random.normal(mu, sigma, size=1000)
num_bins = 7
n, bins, _ = plt.hist(noise, num_bins, normed=1, histtype='step')
y = mlab.normpdf(bins, mu, sigma)
plt.plot(bins, y, 'r--')
plt.show()
5. Để 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, ____ ____36:

>>>

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

import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt

mu = 0
sigma = 1
noise = np.random.normal(mu, sigma, size=1000)
num_bins = 7
n, bins, _ = plt.hist(noise, num_bins, normed=1, histtype='step')
y = mlab.normpdf(bins, mu, sigma)
plt.plot(bins, y, 'r--')
plt.show()
7 với các tần số được cung cấp bởi
import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt

mu = 0
sigma = 1
noise = np.random.normal(mu, sigma, size=1000)
num_bins = 7
n, bins, _ = plt.hist(noise, num_bins, normed=1, histtype='step')
y = mlab.normpdf(bins, mu, sigma)
plt.plot(bins, y, 'r--')
plt.show()
8 (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ừ
import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt

mu = 0
sigma = 1
noise = np.random.normal(mu, sigma, size=1000)
num_bins = 7
n, bins, _ = plt.hist(noise, num_bins, normed=1, histtype='step')
y = mlab.normpdf(bins, mu, sigma)
plt.plot(bins, y, 'r--')
plt.show()
7 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ừ

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

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:

>>>

import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as stats

noise = np.random.normal(0, 1, (1000, ))
density = stats.gaussian_kde(noise)
n, x, _ = plt.hist(noise, bins=np.linspace(-3, 3, 50), 
                   histtype=u'step', density=True)  
plt.plot(x, density(x))
plt.show()
0

Kết quả này có thể không trực quan ngay lập tứ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}
1 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 đồ:

>>>

import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as stats

noise = np.random.normal(0, 1, (1000, ))
density = stats.gaussian_kde(noise)
n, x, _ = plt.hist(noise, bins=np.linspace(-3, 3, 50), 
                   histtype=u'step', density=True)  
plt.plot(x, density(x))
plt.show()
1

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:

>>>

import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as stats

noise = np.random.normal(0, 1, (1000, ))
density = stats.gaussian_kde(noise)
n, x, _ = plt.hist(noise, bins=np.linspace(-3, 3, 50), 
                   histtype=u'step', density=True)  
plt.plot(x, density(x))
plt.show()
2

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.

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

>>> # 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 hoặ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}
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 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
import numpy as np
import scipy.stats as stats

noise = np.random.normal(0, 1, (1000, ))
density = stats.gaussian_kde(noise)
n, x, _ = plt.hist(noise, bins=np.linspace(-3, 3, 50), 
                   histtype=u'step', density=True)  
plt.plot(x, density(x))
plt.show()
3

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

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

import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as stats

noise = np.random.normal(0, 1, (1000, ))
density = stats.gaussian_kde(noise)
n, x, _ = plt.hist(noise, bins=np.linspace(-3, 3, 50), 
                   histtype=u'step', density=True)  
plt.plot(x, density(x))
plt.show()
4

Hướng dẫn how do you make a histogram line in python? - làm thế nào để bạn tạo một dòng 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

>>> # 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 đã 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,

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

import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as stats

noise = np.random.normal(0, 1, (1000, ))
density = stats.gaussian_kde(noise)
n, x, _ = plt.hist(noise, bins=np.linspace(-3, 3, 50), 
                   histtype=u'step', density=True)  
plt.plot(x, density(x))
plt.show()
5

Hướng dẫn how do you make a histogram line in python? - làm thế nào để bạn tạo một dòng biểu đồ trong python?

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

>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
0, có sẵn cho cả các đối tượng
>>> from collections import Counter

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

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
2. Nhưng trước tiên, hãy để tạo ra hai mẫu dữ liệu riêng biệt để so sánh:

>>>

import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as stats

noise = np.random.normal(0, 1, (1000, ))
density = stats.gaussian_kde(noise)
n, x, _ = plt.hist(noise, bins=np.linspace(-3, 3, 50), 
                   histtype=u'step', density=True)  
plt.plot(x, density(x))
plt.show()
6

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

import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as stats

noise = np.random.normal(0, 1, (1000, ))
density = stats.gaussian_kde(noise)
n, x, _ = plt.hist(noise, bins=np.linspace(-3, 3, 50), 
                   histtype=u'step', density=True)  
plt.plot(x, density(x))
plt.show()
7

Hướng dẫn how do you make a histogram line in python? - làm thế nào để bạn tạo một dòng biểu đồ trong python?

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

>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
3, 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

>>> from collections import Counter

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
4. Đâ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 người Hồi giáo theo nghĩa là nó được xác định chính xác là
>>> from collections import Counter

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

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

>>> from collections import Counter

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

import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as stats

noise = np.random.normal(0, 1, (1000, ))
density = stats.gaussian_kde(noise)
n, x, _ = plt.hist(noise, bins=np.linspace(-3, 3, 50), 
                   histtype=u'step', density=True)  
plt.plot(x, density(x))
plt.show()
8

Hướng dẫn how do you make a histogram line in python? - làm thế nào để bạn tạo một dòng 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ừ
    >>> from collections import Counter
    
    >>> recounted = Counter(a)
    >>> recounted
    Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
    
    7 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,
    >>> from collections import Counter
    
    >>> recounted = Counter(a)
    >>> recounted
    Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
    
    8 đạ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
    >>> from collections import Counter
    
    >>> recounted = Counter(a)
    >>> recounted
    Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
    
    9.
  • Để đánh giá cả PDF phân tích và KDE Gaussian, bạn cần một mảng
    >>> recounted.items() == counted.items()
    True
    
    0 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).
    >>> recounted.items() == counted.items()
    True
    
    1 đạ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

>>> recounted.items() == counted.items()
True
2 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
>>> recounted.items() == counted.items()
True
3 từ Ealier:

import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as stats

noise = np.random.normal(0, 1, (1000, ))
density = stats.gaussian_kde(noise)
n, x, _ = plt.hist(noise, bins=np.linspace(-3, 3, 50), 
                   histtype=u'step', density=True)  
plt.plot(x, density(x))
plt.show()
9

Hướng dẫn how do you make a histogram line in python? - làm thế nào để bạn tạo một dòng 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:

noise = np.random.normal(0,1,(1000,1))
n,x,_ = plt.hist(noise, bins = np.linspace(-3,3,7), histtype=u'step' )
bin_centers = 0.5*(x[1:]+x[:-1])
plt.plot(bin_centers,n) ## using bin_centers rather than edges
plt.show()
0

Hướng dẫn how do you make a histogram line in python? - làm thế nào để bạn tạo một dòng 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

>>> recounted.items() == counted.items()
True
4 thuận tiện để tính toán biểu đồ của các giá trị không null cho gấu trúc
>>> from collections import Counter

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

>>>

noise = np.random.normal(0,1,(1000,1))
n,x,_ = plt.hist(noise, bins = np.linspace(-3,3,7), histtype=u'step' )
bin_centers = 0.5*(x[1:]+x[:-1])
plt.plot(bin_centers,n) ## using bin_centers rather than edges
plt.show()
1

Ở những nơi khác,

>>> recounted.items() == counted.items()
True
6 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ý:

>>>

noise = np.random.normal(0,1,(1000,1))
n,x,_ = plt.hist(noise, bins = np.linspace(-3,3,7), histtype=u'step' )
bin_centers = 0.5*(x[1:]+x[:-1])
plt.plot(bin_centers,n) ## using bin_centers rather than edges
plt.show()
2

Ở những nơi khác,

>>> recounted.items() == counted.items()
True
6 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.
>>> recounted.items() == counted.items()
True
7 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ừ
>>> # 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 và
>>> # 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 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
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.
Dữ liệu dạng bảng trong đối tượng Pandas,
>>> from collections import Counter

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

>>> recounted = Counter(a)
>>> recounted
Counter({0: 1, 1: 3, 3: 1, 2: 1, 7: 2, 23: 1})
2.
Các phương pháp gấu trúc như
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,
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,
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 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]))
6, cũng như
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 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]))
8.
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.
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 là một hàm vẽ biểu đồ được sử dụng rộng rãi sử dụng
>>> # 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 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ừ
>>> # 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, để 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 tạo ra một dòng phù hợp nhất trên biểu đồ trong Python?

Làm thế nào để phù hợp với một phân phối cho một biểu đồ trong Python..
Dữ liệu = NP. ngẫu nhiên. Bình thường (0, 1, 1000) Tạo bộ dữ liệu bình thường ngẫu nhiên ..
_, thùng, _ = plt. Lịch sử (dữ liệu, 20, mật độ = 1, alpha = 0,5) tạo biểu đồ từ `data`.
Mu, Sigma = Scipy. số liệu thống kê. định mức. phù hợp (dữ liệu).
best_fit_line = scipy. số liệu thống kê. định mức. ....
plt. Lô đất (Bins, Best_Fit_Line).

Làm thế nào để bạn vẽ 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 ..

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

Sơ đồ dòng đơn giản..
%matplotlib nhập nội tuyến nhập matplotlib.pyplot như plt plt.Phong cách.Sử dụng ('Seaborn-Whitegrid') Nhập khẩu NUMPY dưới dạng NP.....
FIG = plt.Hình () ax = plt.trục () ....
Trong [3]: fig = plt.Hình () ax = plt.....
Trong [4]: plt.Lô đất (x, np. ....
Trong [5]: plt.Lô đất (x, np. ....
plt.Biểu đồ (x, x + 0, '-g') # plt màu xanh lá cây rắn.....
Trong [9]: plt.....
Trong [10]: plt ..

Biểu đồ dòng là gì?

Một biểu đồ được sử dụng để hiển thị phân phối các giá trị dữ liệu dọc theo dòng số thực.Nó cạnh tranh với âm mưu xác suất như một phương pháp đánh giá tính quy tắc.Một biểu đồ được tạo ra bằng cách chia phạm vi dữ liệu thành một số lượng nhỏ các khoảng hoặc thùng.used to display the distribution of data values along the real number line. It competes with the probability plot as a method of assessing normality. A histogram is created by dividing up the range of the data into a small number of intervals or bins.