Hướng dẫn create a scatter plot in python - tạo biểu đồ phân tán trong python


Cốt truyện phân tán

Một biểu đồ phân tán là một sơ đồ trong đó mỗi giá trị trong tập dữ liệu được biểu thị bằng một dấu chấm.

Hướng dẫn create a scatter plot in python - tạo biểu đồ phân tán trong python

Mô-đun matplotlib có phương pháp vẽ các sơ đồ phân tán, nó cần hai mảng có cùng độ dài, một cho các giá trị của trục X và một cho các giá trị của trục y:

import matplotlib.pyplot as plt

price = [2.50, 1.23, 4.02, 3.25, 5.00, 4.40]
sales_per_day = [34, 62, 49, 22, 13, 19]

plt.scatter(price, sales_per_day)
plt.show()
7

import matplotlib.pyplot as plt

price = [2.50, 1.23, 4.02, 3.25, 5.00, 4.40]
sales_per_day = [34, 62, 49, 22, 13, 19]

plt.scatter(price, sales_per_day)
plt.show()
8

Mảng

import matplotlib.pyplot as plt

price = [2.50, 1.23, 4.02, 3.25, 5.00, 4.40]
sales_per_day = [34, 62, 49, 22, 13, 19]

plt.scatter(price, sales_per_day)
plt.show()
9 đại diện cho tuổi của mỗi chiếc xe.

Mảng

plt.plot(price, sales_per_day, "o")
plt.show()
0 đại diện cho tốc độ của mỗi chiếc xe.

Thí dụ

Sử dụng phương thức

plt.plot(price, sales_per_day, "o")
plt.show()
1 để vẽ sơ đồ biểu đồ phân tán:

Nhập matplotlib.pyplot như PLT

x = [5,7,8,7,2,17,2,9,4,11,12,9,6] y = [99,86,87,88,111,86,103,87,94,78,77, 85,86]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

plt.scatter (x, y) plt.show ()
plt.show()

Result:

Hướng dẫn create a scatter plot in python - tạo biểu đồ phân tán trong python

Chạy ví dụ »

Lô đất giải thích

Trục X đại diện cho độ tuổi và trục y đại diện cho tốc độ.

Những gì chúng ta có thể đọc từ sơ đồ là hai chiếc xe nhanh nhất cả hai đều 2 tuổi và chiếc xe chậm nhất là 12 tuổi.

Lưu ý: Có vẻ như chiếc xe mới hơn, nó lái nhanh hơn, nhưng đó có thể là một sự trùng hợp ngẫu nhiên, sau tất cả chúng tôi chỉ đăng ký 13 chiếc xe. It seems that the newer the car, the faster it drives, but that could be a coincidence, after all we only registered 13 cars.



Phân phối dữ liệu ngẫu nhiên

Trong máy học, các bộ dữ liệu có thể chứa hàng ngàn hoặc thậm chí hàng triệu giá trị.

Bạn có thể không có dữ liệu trong thế giới thực khi bạn đang kiểm tra thuật toán, bạn có thể phải sử dụng các giá trị được tạo ngẫu nhiên.

Như chúng ta đã học được trong chương trước, mô -đun Numpy có thể giúp chúng ta với điều đó!

Hãy để chúng tôi tạo hai mảng cả hai đều chứa đầy 1000 số ngẫu nhiên từ phân phối dữ liệu thông thường.

Mảng đầu tiên sẽ có trung bình được đặt thành 5.0 với độ lệch chuẩn là 1.0.

Mảng thứ hai sẽ có trung bình được đặt thành 10.0 với độ lệch chuẩn là 2.0:

Thí dụ

Sử dụng phương thức

plt.plot(price, sales_per_day, "o")
plt.show()
1 để vẽ sơ đồ biểu đồ phân tán:

Nhập matplotlib.pyplot như PLT
import matplotlib.pyplot as plt

x = [5,7,8,7,2,17,2,9,4,11,12,9,6] y = [99,86,87,88,111,86,103,87,94,78,77, 85,86]
y = numpy.random.normal(10.0, 2.0, 1000)

plt.scatter (x, y) plt.show ()
plt.show()

Result:

Hướng dẫn create a scatter plot in python - tạo biểu đồ phân tán trong python

Chạy ví dụ »

Lô đất giải thích

Trục X đại diện cho độ tuổi và trục y đại diện cho tốc độ.

Những gì chúng ta có thể đọc từ sơ đồ là hai chiếc xe nhanh nhất cả hai đều 2 tuổi và chiếc xe chậm nhất là 12 tuổi.



Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem cùng với hướng dẫn bằng văn bản để hiểu sâu hơn về sự hiểu biết của bạn: Sử dụng plt.scatter () để trực quan hóa dữ liệu trong Python This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Using plt.scatter() to Visualize Data in Python

Chức năng nào sẽ tạo ra sơ đồ phân tán trong Python?visualize it. Python has several third-party modules you can use for data visualization. One of the most popular modules is Matplotlib and its submodule pyplot, often referred to using the alias

plt.plot(price, sales_per_day, "o")
plt.show()
2. Matplotlib provides a very versatile tool called
plt.plot(price, sales_per_day, "o")
plt.show()
3
that allows you to create both basic and more complex scatter plots.

Matplotlib có chức năng tích hợp để tạo các biểu đồ phân tán được gọi là scatter ().

Việc sử dụng phương thức scatter () trong python *là gì?

  • Chức năng phân tán () trong matplotlib được sử dụng để tạo ra một biểu đồ phân tán. Để hiểu biết thêm, mô -đun Pyplot có hàm gọi là scatter (), trong số nhiều chức năng khác, giúp tạo hoặc vẽ một biểu đồ phân tán.scatter plot using
    plt.plot(price, sales_per_day, "o")
    plt.show()
    
    3
  • Sử dụng các tham số đầu vào cần thiết và tùy chọninput parameters
  • Tùy chỉnh các lô phân tán cho các lô cơ bản và nâng cao hơnbasic and more advanced plots
  • Đại diện cho nhiều hơn hai chiều với
    plt.plot(price, sales_per_day, "o")
    plt.show()
    
    3more than two dimensions on a scatter plot

Bạn có thể tận dụng tối đa trực quan hóa bằng cách sử dụng

plt.plot(price, sales_per_day, "o")
plt.show()
3 bằng cách tìm hiểu thêm về tất cả các tính năng trong matplotlib và xử lý dữ liệu bằng cách sử dụng Numpy.

Tạo các lô phân tán

Một biểu đồ phân tán là một đại diện trực quan về cách hai biến liên quan đến nhau. Bạn có thể sử dụng các sơ đồ phân tán để khám phá mối quan hệ giữa hai biến, ví dụ bằng cách tìm kiếm bất kỳ mối tương quan nào giữa chúng.

Trong phần này của hướng dẫn, bạn sẽ trở nên quen thuộc với việc tạo ra các sơ đồ phân tán cơ bản bằng cách sử dụng matplotlib. Trong các phần sau, bạn sẽ học cách tùy chỉnh thêm các lô của mình để biểu diễn dữ liệu phức tạp hơn bằng cách sử dụng nhiều hơn hai chiều.

Bắt đầu với plt.plot(price, sales_per_day, "o") plt.show() 3

Trước khi bạn có thể bắt đầu làm việc với

plt.plot(price, sales_per_day, "o")
plt.show()
3, bạn sẽ cần cài đặt matplotlib. Bạn có thể làm như vậy bằng cách sử dụng Manger Gói tiêu chuẩn Python,
plt.plot(price, sales_per_day, "o")
plt.show()
8, bằng cách chạy lệnh sau trong bảng điều khiển:

$ python -m pip install matplotlib

Bây giờ bạn đã cài đặt matplotlib, hãy xem xét trường hợp sử dụng sau. Một quán cà phê bán sáu loại đồ uống cam đóng chai khác nhau. Chủ sở hữu muốn hiểu mối quan hệ giữa giá của đồ uống và số lượng mỗi người anh ta bán, vì vậy anh ta theo dõi số lượng mỗi chiếc đồ uống anh ta bán mỗi ngày. Bạn có thể hình dung mối quan hệ này như sau:

import matplotlib.pyplot as plt

price = [2.50, 1.23, 4.02, 3.25, 5.00, 4.40]
sales_per_day = [34, 62, 49, 22, 13, 19]

plt.scatter(price, sales_per_day)
plt.show()

Trong tập lệnh Python này, bạn nhập mô hình con ____29 từ matplotlib bằng bí danh

plt.plot(price, sales_per_day, "o")
plt.show()
2. Bí danh này thường được sử dụng bởi quy ước để rút ngắn tên mô -đun và mô hình con. Sau đó, bạn tạo danh sách với giá cả và doanh số trung bình mỗi ngày cho mỗi sáu đồ uống màu cam được bán.

Cuối cùng, bạn tạo biểu đồ phân tán bằng cách sử dụng

plt.plot(price, sales_per_day, "o")
plt.show()
3 với hai biến bạn muốn so sánh làm đối số đầu vào. Khi bạn sử dụng tập lệnh Python, bạn cũng cần hiển thị rõ ràng con số bằng cách sử dụng
import timeit
import matplotlib.pyplot as plt

price = [2.50, 1.23, 4.02, 3.25, 5.00, 4.40]
sales_per_day = [34, 62, 49, 22, 13, 19]

print(
    "plt.scatter()",
    timeit.timeit(
        "plt.scatter(price, sales_per_day)",
        number=1000,
        globals=globals(),
    ),
)
print(
    "plt.plot()",
    timeit.timeit(
        "plt.plot(price, sales_per_day, 'o')",
        number=1000,
        globals=globals(),
    ),
)
2.

Khi bạn sử dụng một môi trường tương tác, chẳng hạn như bảng điều khiển hoặc máy tính xách tay Jupyter, bạn không cần phải gọi

import timeit
import matplotlib.pyplot as plt

price = [2.50, 1.23, 4.02, 3.25, 5.00, 4.40]
sales_per_day = [34, 62, 49, 22, 13, 19]

print(
    "plt.scatter()",
    timeit.timeit(
        "plt.scatter(price, sales_per_day)",
        number=1000,
        globals=globals(),
    ),
)
print(
    "plt.plot()",
    timeit.timeit(
        "plt.plot(price, sales_per_day, 'o')",
        number=1000,
        globals=globals(),
    ),
)
2. Trong hướng dẫn này, tất cả các ví dụ sẽ ở dạng tập lệnh và sẽ bao gồm cuộc gọi đến
import timeit
import matplotlib.pyplot as plt

price = [2.50, 1.23, 4.02, 3.25, 5.00, 4.40]
sales_per_day = [34, 62, 49, 22, 13, 19]

print(
    "plt.scatter()",
    timeit.timeit(
        "plt.scatter(price, sales_per_day)",
        number=1000,
        globals=globals(),
    ),
)
print(
    "plt.plot()",
    timeit.timeit(
        "plt.plot(price, sales_per_day, 'o')",
        number=1000,
        globals=globals(),
    ),
)
2.

Ở đây, đầu ra từ mã này:

Hướng dẫn create a scatter plot in python - tạo biểu đồ phân tán trong python

Cốt truyện này cho thấy, nói chung, một thức uống càng đắt tiền, càng ít mặt hàng được bán. Tuy nhiên, đồ uống có giá 4,02 đô la là một ngoại lệ, có thể cho thấy nó là một sản phẩm đặc biệt phổ biến. Khi sử dụng các sơ đồ phân tán theo cách này, kiểm tra chặt chẽ có thể giúp bạn khám phá mối quan hệ giữa các biến. Sau đó, bạn có thể thực hiện phân tích thêm, cho dù đó là sử dụng hồi quy tuyến tính hoặc các kỹ thuật khác.

So sánh plt.plot(price, sales_per_day, "o") plt.show() 3 và import timeit import matplotlib.pyplot as plt price = [2.50, 1.23, 4.02, 3.25, 5.00, 4.40] sales_per_day = [34, 62, 49, 22, 13, 19] print( "plt.scatter()", timeit.timeit( "plt.scatter(price, sales_per_day)", number=1000, globals=globals(), ), ) print( "plt.plot()", timeit.timeit( "plt.plot(price, sales_per_day, 'o')", number=1000, globals=globals(), ), ) 6

Bạn cũng có thể tạo ra biểu đồ phân tán được hiển thị ở trên bằng cách sử dụng một chức năng khác trong

import timeit
import matplotlib.pyplot as plt

price = [2.50, 1.23, 4.02, 3.25, 5.00, 4.40]
sales_per_day = [34, 62, 49, 22, 13, 19]

print(
    "plt.scatter()",
    timeit.timeit(
        "plt.scatter(price, sales_per_day)",
        number=1000,
        globals=globals(),
    ),
)
print(
    "plt.plot()",
    timeit.timeit(
        "plt.plot(price, sales_per_day, 'o')",
        number=1000,
        globals=globals(),
    ),
)
7. Matplotlib từ
import timeit
import matplotlib.pyplot as plt

price = [2.50, 1.23, 4.02, 3.25, 5.00, 4.40]
sales_per_day = [34, 62, 49, 22, 13, 19]

print(
    "plt.scatter()",
    timeit.timeit(
        "plt.scatter(price, sales_per_day)",
        number=1000,
        globals=globals(),
    ),
)
print(
    "plt.plot()",
    timeit.timeit(
        "plt.plot(price, sales_per_day, 'o')",
        number=1000,
        globals=globals(),
    ),
)
6 là một hàm âm mưu đa năng sẽ cho phép bạn tạo các sơ đồ đánh dấu hoặc dòng khác nhau khác nhau.

Bạn có thể đạt được biểu đồ phân tán tương tự như bản đồ bạn thu được trong phần trên với cuộc gọi sau đến

import timeit
import matplotlib.pyplot as plt

price = [2.50, 1.23, 4.02, 3.25, 5.00, 4.40]
sales_per_day = [34, 62, 49, 22, 13, 19]

print(
    "plt.scatter()",
    timeit.timeit(
        "plt.scatter(price, sales_per_day)",
        number=1000,
        globals=globals(),
    ),
)
print(
    "plt.plot()",
    timeit.timeit(
        "plt.plot(price, sales_per_day, 'o')",
        number=1000,
        globals=globals(),
    ),
)
6, sử dụng cùng một dữ liệu:

plt.plot(price, sales_per_day, "o")
plt.show()

Trong trường hợp này, bạn phải bao gồm đánh dấu

import matplotlib.pyplot as plt
import numpy as np

price = np.asarray([2.50, 1.23, 4.02, 3.25, 5.00, 4.40])
sales_per_day = np.asarray([34, 62, 49, 22, 13, 19])
profit_margin = np.asarray([20, 35, 40, 20, 27.5, 15])

plt.scatter(x=price, y=sales_per_day, s=profit_margin * 10)
plt.show()
0 làm đối số thứ ba, vì nếu không
import timeit
import matplotlib.pyplot as plt

price = [2.50, 1.23, 4.02, 3.25, 5.00, 4.40]
sales_per_day = [34, 62, 49, 22, 13, 19]

print(
    "plt.scatter()",
    timeit.timeit(
        "plt.scatter(price, sales_per_day)",
        number=1000,
        globals=globals(),
    ),
)
print(
    "plt.plot()",
    timeit.timeit(
        "plt.plot(price, sales_per_day, 'o')",
        number=1000,
        globals=globals(),
    ),
)
6 sẽ vẽ biểu đồ dòng. Cốt truyện bạn đã tạo với mã này giống hệt với cốt truyện bạn đã tạo trước đó với
plt.plot(price, sales_per_day, "o")
plt.show()
3.

Trong một số trường hợp, đối với âm mưu phân tán cơ bản mà bạn đang vẽ trong ví dụ này, sử dụng

import timeit
import matplotlib.pyplot as plt

price = [2.50, 1.23, 4.02, 3.25, 5.00, 4.40]
sales_per_day = [34, 62, 49, 22, 13, 19]

print(
    "plt.scatter()",
    timeit.timeit(
        "plt.scatter(price, sales_per_day)",
        number=1000,
        globals=globals(),
    ),
)
print(
    "plt.plot()",
    timeit.timeit(
        "plt.plot(price, sales_per_day, 'o')",
        number=1000,
        globals=globals(),
    ),
)
6 có thể thích hợp hơn. Bạn có thể so sánh hiệu quả của hai chức năng bằng mô -đun
import matplotlib.pyplot as plt
import numpy as np

price = np.asarray([2.50, 1.23, 4.02, 3.25, 5.00, 4.40])
sales_per_day = np.asarray([34, 62, 49, 22, 13, 19])
profit_margin = np.asarray([20, 35, 40, 20, 27.5, 15])

plt.scatter(x=price, y=sales_per_day, s=profit_margin * 10)
plt.show()
4:

import timeit
import matplotlib.pyplot as plt

price = [2.50, 1.23, 4.02, 3.25, 5.00, 4.40]
sales_per_day = [34, 62, 49, 22, 13, 19]

print(
    "plt.scatter()",
    timeit.timeit(
        "plt.scatter(price, sales_per_day)",
        number=1000,
        globals=globals(),
    ),
)
print(
    "plt.plot()",
    timeit.timeit(
        "plt.plot(price, sales_per_day, 'o')",
        number=1000,
        globals=globals(),
    ),
)

Hiệu suất sẽ thay đổi trên các máy tính khác nhau, nhưng khi bạn chạy mã này, bạn sẽ thấy rằng

import timeit
import matplotlib.pyplot as plt

price = [2.50, 1.23, 4.02, 3.25, 5.00, 4.40]
sales_per_day = [34, 62, 49, 22, 13, 19]

print(
    "plt.scatter()",
    timeit.timeit(
        "plt.scatter(price, sales_per_day)",
        number=1000,
        globals=globals(),
    ),
)
print(
    "plt.plot()",
    timeit.timeit(
        "plt.plot(price, sales_per_day, 'o')",
        number=1000,
        globals=globals(),
    ),
)
6 hiệu quả hơn đáng kể so với
plt.plot(price, sales_per_day, "o")
plt.show()
3. Khi chạy ví dụ trên trên hệ thống của tôi,
import timeit
import matplotlib.pyplot as plt

price = [2.50, 1.23, 4.02, 3.25, 5.00, 4.40]
sales_per_day = [34, 62, 49, 22, 13, 19]

print(
    "plt.scatter()",
    timeit.timeit(
        "plt.scatter(price, sales_per_day)",
        number=1000,
        globals=globals(),
    ),
)
print(
    "plt.plot()",
    timeit.timeit(
        "plt.plot(price, sales_per_day, 'o')",
        number=1000,
        globals=globals(),
    ),
)
6 nhanh hơn bảy lần.

Nếu bạn có thể tạo các sơ đồ phân tán bằng cách sử dụng

import timeit
import matplotlib.pyplot as plt

price = [2.50, 1.23, 4.02, 3.25, 5.00, 4.40]
sales_per_day = [34, 62, 49, 22, 13, 19]

print(
    "plt.scatter()",
    timeit.timeit(
        "plt.scatter(price, sales_per_day)",
        number=1000,
        globals=globals(),
    ),
)
print(
    "plt.plot()",
    timeit.timeit(
        "plt.plot(price, sales_per_day, 'o')",
        number=1000,
        globals=globals(),
    ),
)
6 và nó cũng nhanh hơn nhiều, tại sao bạn nên sử dụng
plt.plot(price, sales_per_day, "o")
plt.show()
3? Bạn sẽ tìm thấy câu trả lời trong phần còn lại của hướng dẫn này. Hầu hết các tùy chỉnh và sử dụng nâng cao mà bạn sẽ tìm hiểu trong hướng dẫn này chỉ có thể khi sử dụng
plt.plot(price, sales_per_day, "o")
plt.show()
3. Ở đây, một quy tắc của ngón tay cái bạn có thể sử dụng:

  • Nếu bạn cần một biểu đồ phân tán cơ bản, hãy sử dụng
    import timeit
    import matplotlib.pyplot as plt
    
    price = [2.50, 1.23, 4.02, 3.25, 5.00, 4.40]
    sales_per_day = [34, 62, 49, 22, 13, 19]
    
    print(
        "plt.scatter()",
        timeit.timeit(
            "plt.scatter(price, sales_per_day)",
            number=1000,
            globals=globals(),
        ),
    )
    print(
        "plt.plot()",
        timeit.timeit(
            "plt.plot(price, sales_per_day, 'o')",
            number=1000,
            globals=globals(),
        ),
    )
    
    6, đặc biệt nếu bạn muốn ưu tiên hiệu suất.
  • Nếu bạn muốn tùy chỉnh sơ đồ phân tán của mình bằng cách sử dụng các tính năng âm mưu nâng cao hơn, hãy sử dụng
    plt.plot(price, sales_per_day, "o")
    plt.show()
    
    3.

Trong phần tiếp theo, bạn sẽ bắt đầu khám phá việc sử dụng nâng cao hơn của

plt.plot(price, sales_per_day, "o")
plt.show()
3.

Tùy chỉnh các điểm đánh dấu trong các sơ đồ phân tán

Bạn có thể trực quan hóa nhiều hơn hai biến trên biểu đồ phân tán hai chiều bằng cách tùy chỉnh các điểm đánh dấu. Có bốn tính năng chính của các điểm đánh dấu được sử dụng trong một biểu đồ phân tán mà bạn có thể tùy chỉnh với

plt.plot(price, sales_per_day, "o")
plt.show()
3:

  1. Kích thước
  2. Màu sắc
  3. Hình dạng
  4. Tính minh bạch

Trong phần này của hướng dẫn, bạn sẽ học cách sửa đổi tất cả các thuộc tính này.

Thay đổi kích thước

Hãy để trở lại với chủ quán cà phê mà bạn đã gặp trước đó trong hướng dẫn này. Các loại đồ uống màu cam khác nhau mà anh ta bán đến từ các nhà cung cấp khác nhau và có tỷ suất lợi nhuận khác nhau. Bạn có thể hiển thị thông tin bổ sung này trong biểu đồ phân tán bằng cách điều chỉnh kích thước của điểm đánh dấu. Biên lợi nhuận được đưa ra dưới dạng phần trăm trong ví dụ này:

import matplotlib.pyplot as plt
import numpy as np

price = np.asarray([2.50, 1.23, 4.02, 3.25, 5.00, 4.40])
sales_per_day = np.asarray([34, 62, 49, 22, 13, 19])
profit_margin = np.asarray([20, 35, 40, 20, 27.5, 15])

plt.scatter(x=price, y=sales_per_day, s=profit_margin * 10)
plt.show()

Bạn có thể nhận thấy một vài thay đổi từ ví dụ đầu tiên. Thay vì danh sách, bạn hiện đang sử dụng các mảng numpy. Bạn có thể sử dụng bất kỳ cấu trúc dữ liệu giống như mảng nào cho dữ liệu và các mảng numpy thường được sử dụng trong các loại ứng dụng này vì chúng cho phép các hoạt động theo yếu tố được thực hiện hiệu quả. Mô -đun Numpy là một sự phụ thuộc của matplotlib, đó là lý do tại sao bạn không cần phải cài đặt nó theo cách thủ công.element-wise operations that are performed efficiently. The NumPy module is a dependency of Matplotlib, which is why you don’t need to install it manually.

Bạn cũng đã sử dụng các tham số được đặt tên làm đối số đầu vào trong lệnh gọi hàm. Các tham số

import matplotlib.pyplot as plt

price = [2.50, 1.23, 4.02, 3.25, 5.00, 4.40]
sales_per_day = [34, 62, 49, 22, 13, 19]

plt.scatter(price, sales_per_day)
plt.show()
9 và
plt.plot(price, sales_per_day, "o")
plt.show()
0 là bắt buộc, nhưng tất cả các tham số khác là tùy chọn.named parameters as input arguments in the function call. The parameters
import matplotlib.pyplot as plt

price = [2.50, 1.23, 4.02, 3.25, 5.00, 4.40]
sales_per_day = [34, 62, 49, 22, 13, 19]

plt.scatter(price, sales_per_day)
plt.show()
9 and
plt.plot(price, sales_per_day, "o")
plt.show()
0 are required, but all other parameters are optional.

Tham số

# ...

low = (0, 1, 0)
medium = (1, 1, 0)
high = (1, 0, 0)

sugar_content = [low, high, medium, medium, high, low]

plt.scatter(
    x=price,
    y=sales_per_day,
    s=profit_margin * 10,
    c=sugar_content,
)
plt.show()
7 biểu thị kích thước của điểm đánh dấu. Trong ví dụ này, bạn sử dụng biên lợi nhuận như một biến để xác định kích thước của điểm đánh dấu và nhân nó với
# ...

low = (0, 1, 0)
medium = (1, 1, 0)
high = (1, 0, 0)

sugar_content = [low, high, medium, medium, high, low]

plt.scatter(
    x=price,
    y=sales_per_day,
    s=profit_margin * 10,
    c=sugar_content,
)
plt.show()
8 để hiển thị chênh lệch kích thước rõ ràng hơn.

Bạn có thể thấy biểu đồ phân tán được tạo bởi mã này bên dưới:

Hướng dẫn create a scatter plot in python - tạo biểu đồ phân tán trong python

Kích thước của điểm đánh dấu cho thấy tỷ suất lợi nhuận cho mỗi sản phẩm. Hai loại đồ uống màu cam bán nhiều nhất cũng là những thứ có tỷ suất lợi nhuận cao nhất. Đây là tin tốt cho chủ quán cà phê!

Thay đổi màu sắc

Nhiều khách hàng của quán cà phê muốn đọc các nhãn một cách cẩn thận, đặc biệt là để tìm ra hàm lượng đường của đồ uống mà họ mua. Chủ quán cà phê muốn nhấn mạnh lựa chọn thực phẩm lành mạnh trong chiến dịch tiếp thị tiếp theo của mình, vì vậy anh ta phân loại đồ uống dựa trên hàm lượng đường của họ và sử dụng hệ thống đèn giao thông để biểu thị hàm lượng đường thấp, trung bình hoặc đường cao cho đồ uống.

Bạn có thể thêm màu sắc vào các điểm đánh dấu trong biểu đồ phân tán để hiển thị hàm lượng đường của mỗi đồ uống:

# ...

low = (0, 1, 0)
medium = (1, 1, 0)
high = (1, 0, 0)

sugar_content = [low, high, medium, medium, high, low]

plt.scatter(
    x=price,
    y=sales_per_day,
    s=profit_margin * 10,
    c=sugar_content,
)
plt.show()

Bạn xác định các biến

# ...

low = (0, 1, 0)
medium = (1, 1, 0)
high = (1, 0, 0)

sugar_content = [low, high, medium, medium, high, low]

plt.scatter(
    x=price,
    y=sales_per_day,
    s=profit_margin * 10,
    c=sugar_content,
)
plt.show()
9,
import matplotlib.pyplot as plt
import numpy as np

low = (0, 1, 0)
medium = (1, 1, 0)
high = (1, 0, 0)

price_orange = np.asarray([2.50, 1.23, 4.02, 3.25, 5.00, 4.40])
sales_per_day_orange = np.asarray([34, 62, 49, 22, 13, 19])
profit_margin_orange = np.asarray([20, 35, 40, 20, 27.5, 15])
sugar_content_orange = [low, high, medium, medium, high, low]

price_cereal = np.asarray([1.50, 2.50, 1.15, 1.95])
sales_per_day_cereal = np.asarray([67, 34, 36, 12])
profit_margin_cereal = np.asarray([20, 42.5, 33.3, 18])
sugar_content_cereal = [low, high, medium, low]

plt.scatter(
    x=price_orange,
    y=sales_per_day_orange,
    s=profit_margin_orange * 10,
    c=sugar_content_orange,
)
plt.scatter(
    x=price_cereal,
    y=sales_per_day_cereal,
    s=profit_margin_cereal * 10,
    c=sugar_content_cereal,
)
plt.show()
0 và
import matplotlib.pyplot as plt
import numpy as np

low = (0, 1, 0)
medium = (1, 1, 0)
high = (1, 0, 0)

price_orange = np.asarray([2.50, 1.23, 4.02, 3.25, 5.00, 4.40])
sales_per_day_orange = np.asarray([34, 62, 49, 22, 13, 19])
profit_margin_orange = np.asarray([20, 35, 40, 20, 27.5, 15])
sugar_content_orange = [low, high, medium, medium, high, low]

price_cereal = np.asarray([1.50, 2.50, 1.15, 1.95])
sales_per_day_cereal = np.asarray([67, 34, 36, 12])
profit_margin_cereal = np.asarray([20, 42.5, 33.3, 18])
sugar_content_cereal = [low, high, medium, low]

plt.scatter(
    x=price_orange,
    y=sales_per_day_orange,
    s=profit_margin_orange * 10,
    c=sugar_content_orange,
)
plt.scatter(
    x=price_cereal,
    y=sales_per_day_cereal,
    s=profit_margin_cereal * 10,
    c=sugar_content_cereal,
)
plt.show()
1 là bộ dữ liệu, mỗi bộ chứa ba giá trị đại diện cho các thành phần màu đỏ, xanh lá cây và xanh lam theo thứ tự đó. Đây là các giá trị màu RGB. Các bộ dữ liệu cho
# ...

low = (0, 1, 0)
medium = (1, 1, 0)
high = (1, 0, 0)

sugar_content = [low, high, medium, medium, high, low]

plt.scatter(
    x=price,
    y=sales_per_day,
    s=profit_margin * 10,
    c=sugar_content,
)
plt.show()
9,
import matplotlib.pyplot as plt
import numpy as np

low = (0, 1, 0)
medium = (1, 1, 0)
high = (1, 0, 0)

price_orange = np.asarray([2.50, 1.23, 4.02, 3.25, 5.00, 4.40])
sales_per_day_orange = np.asarray([34, 62, 49, 22, 13, 19])
profit_margin_orange = np.asarray([20, 35, 40, 20, 27.5, 15])
sugar_content_orange = [low, high, medium, medium, high, low]

price_cereal = np.asarray([1.50, 2.50, 1.15, 1.95])
sales_per_day_cereal = np.asarray([67, 34, 36, 12])
profit_margin_cereal = np.asarray([20, 42.5, 33.3, 18])
sugar_content_cereal = [low, high, medium, low]

plt.scatter(
    x=price_orange,
    y=sales_per_day_orange,
    s=profit_margin_orange * 10,
    c=sugar_content_orange,
)
plt.scatter(
    x=price_cereal,
    y=sales_per_day_cereal,
    s=profit_margin_cereal * 10,
    c=sugar_content_cereal,
)
plt.show()
0 và
import matplotlib.pyplot as plt
import numpy as np

low = (0, 1, 0)
medium = (1, 1, 0)
high = (1, 0, 0)

price_orange = np.asarray([2.50, 1.23, 4.02, 3.25, 5.00, 4.40])
sales_per_day_orange = np.asarray([34, 62, 49, 22, 13, 19])
profit_margin_orange = np.asarray([20, 35, 40, 20, 27.5, 15])
sugar_content_orange = [low, high, medium, medium, high, low]

price_cereal = np.asarray([1.50, 2.50, 1.15, 1.95])
sales_per_day_cereal = np.asarray([67, 34, 36, 12])
profit_margin_cereal = np.asarray([20, 42.5, 33.3, 18])
sugar_content_cereal = [low, high, medium, low]

plt.scatter(
    x=price_orange,
    y=sales_per_day_orange,
    s=profit_margin_orange * 10,
    c=sugar_content_orange,
)
plt.scatter(
    x=price_cereal,
    y=sales_per_day_cereal,
    s=profit_margin_cereal * 10,
    c=sugar_content_cereal,
)
plt.show()
1 lần lượt đại diện cho màu xanh lá cây, vàng và đỏ.

Sau đó, bạn đã xác định biến

import matplotlib.pyplot as plt
import numpy as np

low = (0, 1, 0)
medium = (1, 1, 0)
high = (1, 0, 0)

price_orange = np.asarray([2.50, 1.23, 4.02, 3.25, 5.00, 4.40])
sales_per_day_orange = np.asarray([34, 62, 49, 22, 13, 19])
profit_margin_orange = np.asarray([20, 35, 40, 20, 27.5, 15])
sugar_content_orange = [low, high, medium, medium, high, low]

price_cereal = np.asarray([1.50, 2.50, 1.15, 1.95])
sales_per_day_cereal = np.asarray([67, 34, 36, 12])
profit_margin_cereal = np.asarray([20, 42.5, 33.3, 18])
sugar_content_cereal = [low, high, medium, low]

plt.scatter(
    x=price_orange,
    y=sales_per_day_orange,
    s=profit_margin_orange * 10,
    c=sugar_content_orange,
)
plt.scatter(
    x=price_cereal,
    y=sales_per_day_cereal,
    s=profit_margin_cereal * 10,
    c=sugar_content_cereal,
)
plt.show()
5 để phân loại từng đồ uống. Bạn sử dụng tham số tùy chọn
import matplotlib.pyplot as plt
import numpy as np

low = (0, 1, 0)
medium = (1, 1, 0)
high = (1, 0, 0)

price_orange = np.asarray([2.50, 1.23, 4.02, 3.25, 5.00, 4.40])
sales_per_day_orange = np.asarray([34, 62, 49, 22, 13, 19])
profit_margin_orange = np.asarray([20, 35, 40, 20, 27.5, 15])
sugar_content_orange = [low, high, medium, medium, high, low]

price_cereal = np.asarray([1.50, 2.50, 1.15, 1.95])
sales_per_day_cereal = np.asarray([67, 34, 36, 12])
profit_margin_cereal = np.asarray([20, 42.5, 33.3, 18])
sugar_content_cereal = [low, high, medium, low]

plt.scatter(
    x=price_orange,
    y=sales_per_day_orange,
    s=profit_margin_orange * 10,
    c=sugar_content_orange,
)
plt.scatter(
    x=price_cereal,
    y=sales_per_day_cereal,
    s=profit_margin_cereal * 10,
    c=sugar_content_cereal,
)
plt.show()
6 trong lệnh gọi hàm để xác định màu của mỗi điểm đánh dấu. Ở đây, cốt truyện phân tán được sản xuất bởi mã này:

Hướng dẫn create a scatter plot in python - tạo biểu đồ phân tán trong python

Chủ quán cà phê đã quyết định loại bỏ đồ uống đắt nhất khỏi thực đơn vì điều này không bán được và có hàm lượng đường cao. Anh ta cũng có nên ngừng dự trữ đồ uống rẻ nhất để tăng thông tin sức khỏe của doanh nghiệp, mặc dù nó bán tốt và có tỷ suất lợi nhuận tốt?

Thay đổi hình dạng

Chủ quán cà phê đã thấy bài tập này rất hữu ích, và anh ta muốn điều tra một sản phẩm khác. Ngoài đồ uống màu cam, bây giờ bạn cũng sẽ vẽ dữ liệu tương tự cho phạm vi của các thanh ngũ cốc có sẵn trong quán cà phê:

import matplotlib.pyplot as plt
import numpy as np

low = (0, 1, 0)
medium = (1, 1, 0)
high = (1, 0, 0)

price_orange = np.asarray([2.50, 1.23, 4.02, 3.25, 5.00, 4.40])
sales_per_day_orange = np.asarray([34, 62, 49, 22, 13, 19])
profit_margin_orange = np.asarray([20, 35, 40, 20, 27.5, 15])
sugar_content_orange = [low, high, medium, medium, high, low]

price_cereal = np.asarray([1.50, 2.50, 1.15, 1.95])
sales_per_day_cereal = np.asarray([67, 34, 36, 12])
profit_margin_cereal = np.asarray([20, 42.5, 33.3, 18])
sugar_content_cereal = [low, high, medium, low]

plt.scatter(
    x=price_orange,
    y=sales_per_day_orange,
    s=profit_margin_orange * 10,
    c=sugar_content_orange,
)
plt.scatter(
    x=price_cereal,
    y=sales_per_day_cereal,
    s=profit_margin_cereal * 10,
    c=sugar_content_cereal,
)
plt.show()

Trong mã này, bạn tái cấu trúc các tên biến cần tính đến rằng bây giờ bạn có dữ liệu cho hai sản phẩm khác nhau. Sau đó, bạn vẽ cả hai sơ đồ phân tán trong một hình duy nhất. Điều này cho đầu ra sau:

Hướng dẫn create a scatter plot in python - tạo biểu đồ phân tán trong python

Thật không may, bạn không còn có thể tìm ra điểm dữ liệu nào thuộc về đồ uống màu cam và với các thanh ngũ cốc. Bạn có thể thay đổi hình dạng của điểm đánh dấu cho một trong các sơ đồ phân tán:

import matplotlib.pyplot as plt
import numpy as np

low = (0, 1, 0)
medium = (1, 1, 0)
high = (1, 0, 0)

price_orange = np.asarray([2.50, 1.23, 4.02, 3.25, 5.00, 4.40])
sales_per_day_orange = np.asarray([34, 62, 49, 22, 13, 19])
profit_margin_orange = np.asarray([20, 35, 40, 20, 27.5, 15])
sugar_content_orange = [low, high, medium, medium, high, low]

price_cereal = np.asarray([1.50, 2.50, 1.15, 1.95])
sales_per_day_cereal = np.asarray([67, 34, 36, 12])
profit_margin_cereal = np.asarray([20, 42.5, 33.3, 18])
sugar_content_cereal = [low, high, medium, low]

plt.scatter(
    x=price_orange,
    y=sales_per_day_orange,
    s=profit_margin_orange * 10,
    c=sugar_content_orange,
)
plt.scatter(
    x=price_cereal,
    y=sales_per_day_cereal,
    s=profit_margin_cereal * 10,
    c=sugar_content_cereal,
    marker="d",
)
plt.show()

Bạn giữ hình dạng điểm đánh dấu mặc định cho dữ liệu đồ uống màu cam. Điểm đánh dấu mặc định là

import matplotlib.pyplot as plt
import numpy as np

price = np.asarray([2.50, 1.23, 4.02, 3.25, 5.00, 4.40])
sales_per_day = np.asarray([34, 62, 49, 22, 13, 19])
profit_margin = np.asarray([20, 35, 40, 20, 27.5, 15])

plt.scatter(x=price, y=sales_per_day, s=profit_margin * 10)
plt.show()
0, đại diện cho một dấu chấm. Đối với dữ liệu thanh ngũ cốc, bạn đặt hình dạng điểm đánh dấu thành
import matplotlib.pyplot as plt
import numpy as np

low = (0, 1, 0)
medium = (1, 1, 0)
high = (1, 0, 0)

price_orange = np.asarray([2.50, 1.23, 4.02, 3.25, 5.00, 4.40])
sales_per_day_orange = np.asarray([34, 62, 49, 22, 13, 19])
profit_margin_orange = np.asarray([20, 35, 40, 20, 27.5, 15])
sugar_content_orange = [low, high, medium, medium, high, low]

price_cereal = np.asarray([1.50, 2.50, 1.15, 1.95])
sales_per_day_cereal = np.asarray([67, 34, 36, 12])
profit_margin_cereal = np.asarray([20, 42.5, 33.3, 18])
sugar_content_cereal = [low, high, medium, low]

plt.scatter(
    x=price_orange,
    y=sales_per_day_orange,
    s=profit_margin_orange * 10,
    c=sugar_content_orange,
)
plt.scatter(
    x=price_cereal,
    y=sales_per_day_cereal,
    s=profit_margin_cereal * 10,
    c=sugar_content_cereal,
)
plt.show()
8, đại diện cho một điểm đánh dấu kim cương. Bạn có thể tìm thấy danh sách tất cả các điểm đánh dấu bạn có thể sử dụng trong trang tài liệu trên các điểm đánh dấu. Dưới đây là hai ô phân tán được đặt chồng lên trên cùng một hình:

Hướng dẫn create a scatter plot in python - tạo biểu đồ phân tán trong python

Bây giờ bạn có thể phân biệt các điểm dữ liệu cho đồ uống màu cam với các điểm cho các thanh ngũ cốc. Nhưng có một vấn đề với cốt truyện cuối cùng bạn tạo ra mà bạn sẽ khám phá trong phần tiếp theo.

Thay đổi tính minh bạch

Một trong những điểm dữ liệu cho đồ uống màu cam đã biến mất. Cần có sáu đồ uống màu cam, nhưng chỉ có thể nhìn thấy năm điểm đánh dấu trong hình. Một trong những điểm dữ liệu thanh ngũ cốc là ẩn một điểm dữ liệu đồ uống màu cam.

Bạn có thể khắc phục sự cố trực quan này bằng cách tạo các điểm dữ liệu trong suốt một phần bằng cách sử dụng giá trị alpha:

# ...

plt.scatter(
    x=price_orange,
    y=sales_per_day_orange,
    s=profit_margin_orange * 10,
    c=sugar_content_orange,
    alpha=0.5,
)
plt.scatter(
    x=price_cereal,
    y=sales_per_day_cereal,
    s=profit_margin_cereal * 10,
    c=sugar_content_cereal,
    marker="d",
    alpha=0.5,
)

plt.title("Sales vs Prices for Orange Drinks and Cereal Bars")
plt.legend(["Orange Drinks", "Cereal Bars"])
plt.xlabel("Price (Currency Unit)")
plt.ylabel("Average weekly sales")
plt.text(
    3.2,
    55,
    "Size of marker = profit margin\n" "Color of marker = sugar content",
)

plt.show()

Bạn đã đặt giá trị

import matplotlib.pyplot as plt
import numpy as np

low = (0, 1, 0)
medium = (1, 1, 0)
high = (1, 0, 0)

price_orange = np.asarray([2.50, 1.23, 4.02, 3.25, 5.00, 4.40])
sales_per_day_orange = np.asarray([34, 62, 49, 22, 13, 19])
profit_margin_orange = np.asarray([20, 35, 40, 20, 27.5, 15])
sugar_content_orange = [low, high, medium, medium, high, low]

price_cereal = np.asarray([1.50, 2.50, 1.15, 1.95])
sales_per_day_cereal = np.asarray([67, 34, 36, 12])
profit_margin_cereal = np.asarray([20, 42.5, 33.3, 18])
sugar_content_cereal = [low, high, medium, low]

plt.scatter(
    x=price_orange,
    y=sales_per_day_orange,
    s=profit_margin_orange * 10,
    c=sugar_content_orange,
)
plt.scatter(
    x=price_cereal,
    y=sales_per_day_cereal,
    s=profit_margin_cereal * 10,
    c=sugar_content_cereal,
)
plt.show()
9 của cả hai bộ điểm đánh dấu thành
import matplotlib.pyplot as plt
import numpy as np

low = (0, 1, 0)
medium = (1, 1, 0)
high = (1, 0, 0)

price_orange = np.asarray([2.50, 1.23, 4.02, 3.25, 5.00, 4.40])
sales_per_day_orange = np.asarray([34, 62, 49, 22, 13, 19])
profit_margin_orange = np.asarray([20, 35, 40, 20, 27.5, 15])
sugar_content_orange = [low, high, medium, medium, high, low]

price_cereal = np.asarray([1.50, 2.50, 1.15, 1.95])
sales_per_day_cereal = np.asarray([67, 34, 36, 12])
profit_margin_cereal = np.asarray([20, 42.5, 33.3, 18])
sugar_content_cereal = [low, high, medium, low]

plt.scatter(
    x=price_orange,
    y=sales_per_day_orange,
    s=profit_margin_orange * 10,
    c=sugar_content_orange,
)
plt.scatter(
    x=price_cereal,
    y=sales_per_day_cereal,
    s=profit_margin_cereal * 10,
    c=sugar_content_cereal,
    marker="d",
)
plt.show()
0, điều đó có nghĩa là chúng là semitransarent. Bây giờ bạn có thể thấy tất cả các điểm dữ liệu trong lô này, bao gồm cả những điểm trùng khớp:

Hướng dẫn create a scatter plot in python - tạo biểu đồ phân tán trong python

Bạn cũng đã thêm một tiêu đề và các nhãn khác vào cốt truyện để hoàn thành con số với nhiều thông tin hơn về những gì mà được hiển thị.

Tùy chỉnh Colormap và phong cách

Trong các sơ đồ phân tán mà bạn đã tạo ra cho đến nay, bạn đã sử dụng ba màu để thể hiện hàm lượng đường thấp, trung bình hoặc cao cho đồ uống và thanh ngũ cốc. Bây giờ, bạn sẽ thay đổi điều này để màu trực tiếp đại diện cho hàm lượng đường thực tế của các mặt hàng.

Trước tiên bạn cần phải tái cấu trúc các biến

import matplotlib.pyplot as plt
import numpy as np

low = (0, 1, 0)
medium = (1, 1, 0)
high = (1, 0, 0)

price_orange = np.asarray([2.50, 1.23, 4.02, 3.25, 5.00, 4.40])
sales_per_day_orange = np.asarray([34, 62, 49, 22, 13, 19])
profit_margin_orange = np.asarray([20, 35, 40, 20, 27.5, 15])
sugar_content_orange = [low, high, medium, medium, high, low]

price_cereal = np.asarray([1.50, 2.50, 1.15, 1.95])
sales_per_day_cereal = np.asarray([67, 34, 36, 12])
profit_margin_cereal = np.asarray([20, 42.5, 33.3, 18])
sugar_content_cereal = [low, high, medium, low]

plt.scatter(
    x=price_orange,
    y=sales_per_day_orange,
    s=profit_margin_orange * 10,
    c=sugar_content_orange,
)
plt.scatter(
    x=price_cereal,
    y=sales_per_day_cereal,
    s=profit_margin_cereal * 10,
    c=sugar_content_cereal,
    marker="d",
)
plt.show()
1 và
import matplotlib.pyplot as plt
import numpy as np

low = (0, 1, 0)
medium = (1, 1, 0)
high = (1, 0, 0)

price_orange = np.asarray([2.50, 1.23, 4.02, 3.25, 5.00, 4.40])
sales_per_day_orange = np.asarray([34, 62, 49, 22, 13, 19])
profit_margin_orange = np.asarray([20, 35, 40, 20, 27.5, 15])
sugar_content_orange = [low, high, medium, medium, high, low]

price_cereal = np.asarray([1.50, 2.50, 1.15, 1.95])
sales_per_day_cereal = np.asarray([67, 34, 36, 12])
profit_margin_cereal = np.asarray([20, 42.5, 33.3, 18])
sugar_content_cereal = [low, high, medium, low]

plt.scatter(
    x=price_orange,
    y=sales_per_day_orange,
    s=profit_margin_orange * 10,
    c=sugar_content_orange,
)
plt.scatter(
    x=price_cereal,
    y=sales_per_day_cereal,
    s=profit_margin_cereal * 10,
    c=sugar_content_cereal,
    marker="d",
)
plt.show()
2 để chúng đại diện cho giá trị nội dung đường thay vì chỉ các giá trị màu RGB:

sugar_content_orange = [15, 35, 22, 27, 38, 14]
sugar_content_cereal = [21, 49, 29, 24]

Đây là các danh sách hiện có phần trăm của lượng đường được khuyến nghị hàng ngày trong mỗi mặt hàng. Phần còn lại của mã vẫn giữ nguyên, nhưng giờ đây bạn có thể chọn colormap để sử dụng. Bản đồ này giá trị thành màu:

import matplotlib.pyplot as plt

price = [2.50, 1.23, 4.02, 3.25, 5.00, 4.40]
sales_per_day = [34, 62, 49, 22, 13, 19]

plt.scatter(price, sales_per_day)
plt.show()
0

Màu sắc của các điểm đánh dấu hiện dựa trên quy mô liên tục và bạn cũng đã hiển thị thanh màu hoạt động như một huyền thoại cho màu sắc của các điểm đánh dấu. Ở đây, âm mưu phân tán kết quả:colorbar that acts as a legend for the color of the markers. Here’s the resulting scatter plot:

Hướng dẫn create a scatter plot in python - tạo biểu đồ phân tán trong python

Tất cả các ô mà bạn đã vẽ cho đến nay đã được hiển thị theo kiểu matplotlib gốc. Bạn có thể thay đổi kiểu này bằng cách sử dụng một trong một số tùy chọn. Bạn có thể hiển thị các kiểu có sẵn bằng lệnh sau:

>>>

import matplotlib.pyplot as plt

price = [2.50, 1.23, 4.02, 3.25, 5.00, 4.40]
sales_per_day = [34, 62, 49, 22, 13, 19]

plt.scatter(price, sales_per_day)
plt.show()
1

Bây giờ bạn có thể thay đổi kiểu cốt truyện khi sử dụng matplotlib bằng cách sử dụng cuộc gọi chức năng sau khi gọi

plt.plot(price, sales_per_day, "o")
plt.show()
3:

import matplotlib.pyplot as plt

price = [2.50, 1.23, 4.02, 3.25, 5.00, 4.40]
sales_per_day = [34, 62, 49, 22, 13, 19]

plt.scatter(price, sales_per_day)
plt.show()
2

Điều này thay đổi phong cách của Seaborn, một gói trực quan của bên thứ ba khác. Bạn có thể thấy phong cách khác nhau bằng cách vẽ sơ đồ biểu đồ phân tán cuối cùng mà bạn đã hiển thị ở trên bằng cách sử dụng phong cách Seaborn:

Hướng dẫn create a scatter plot in python - tạo biểu đồ phân tán trong python

Bạn có thể đọc thêm về việc tùy chỉnh các lô trong matplotlib, và cũng có những hướng dẫn tiếp theo trên các trang tài liệu matplotlib.

Sử dụng

plt.plot(price, sales_per_day, "o")
plt.show()
3 để tạo các sơ đồ phân tán cho phép bạn hiển thị nhiều hơn hai biến. Dưới đây là các biến được thể hiện trong ví dụ này:

Biến đổiĐại diện bởi
Giá bánTrục x
Số trung bình được bánTrục y
Tỷ suất lợi nhuậnKích thước đánh dấu
Loại sản phẩmHình dạng đánh dấu
Hàm lượng đườngMàu đánh dấu

Khả năng thể hiện nhiều hơn hai biến làm cho

plt.plot(price, sales_per_day, "o")
plt.show()
3 trở thành một công cụ rất mạnh mẽ và linh hoạt.

Khám phá ________ 76 ()

plt.plot(price, sales_per_day, "o")
plt.show()
3 cung cấp sự linh hoạt hơn nữa trong việc tùy chỉnh các sơ đồ phân tán. Trong phần này, bạn sẽ khám phá cách che dấu dữ liệu bằng các mảng numpy và phân tán các sơ đồ thông qua một ví dụ. Trong ví dụ này, bạn sẽ tạo ra các điểm dữ liệu ngẫu nhiên và sau đó tách chúng thành hai vùng riêng biệt trong cùng một biểu đồ phân tán.

Một người đi lại, người rất quan tâm đến việc thu thập dữ liệu đã đối chiếu thời gian đến xe buýt tại trạm xe buýt địa phương của cô trong khoảng thời gian sáu tháng. Thời gian đến thời khóa

Hướng dẫn create a scatter plot in python - tạo biểu đồ phân tán trong python

Cốt truyện này cho thấy khả năng tương đối của một chiếc xe buýt đến mỗi phút trong vòng một giờ. Phân phối xác suất này có thể được biểu diễn bằng Numpy và

import matplotlib.pyplot as plt
import numpy as np

low = (0, 1, 0)
medium = (1, 1, 0)
high = (1, 0, 0)

price_orange = np.asarray([2.50, 1.23, 4.02, 3.25, 5.00, 4.40])
sales_per_day_orange = np.asarray([34, 62, 49, 22, 13, 19])
profit_margin_orange = np.asarray([20, 35, 40, 20, 27.5, 15])
sugar_content_orange = [low, high, medium, medium, high, low]

price_cereal = np.asarray([1.50, 2.50, 1.15, 1.95])
sales_per_day_cereal = np.asarray([67, 34, 36, 12])
profit_margin_cereal = np.asarray([20, 42.5, 33.3, 18])
sugar_content_cereal = [low, high, medium, low]

plt.scatter(
    x=price_orange,
    y=sales_per_day_orange,
    s=profit_margin_orange * 10,
    c=sugar_content_orange,
)
plt.scatter(
    x=price_cereal,
    y=sales_per_day_cereal,
    s=profit_margin_cereal * 10,
    c=sugar_content_cereal,
    marker="d",
)
plt.show()
8:

import matplotlib.pyplot as plt

price = [2.50, 1.23, 4.02, 3.25, 5.00, 4.40]
sales_per_day = [34, 62, 49, 22, 13, 19]

plt.scatter(price, sales_per_day)
plt.show()
3

Bạn đã tạo ra hai phân phối bình thường tập trung vào

import matplotlib.pyplot as plt
import numpy as np

low = (0, 1, 0)
medium = (1, 1, 0)
high = (1, 0, 0)

price_orange = np.asarray([2.50, 1.23, 4.02, 3.25, 5.00, 4.40])
sales_per_day_orange = np.asarray([34, 62, 49, 22, 13, 19])
profit_margin_orange = np.asarray([20, 35, 40, 20, 27.5, 15])
sugar_content_orange = [low, high, medium, medium, high, low]

price_cereal = np.asarray([1.50, 2.50, 1.15, 1.95])
sales_per_day_cereal = np.asarray([67, 34, 36, 12])
profit_margin_cereal = np.asarray([20, 42.5, 33.3, 18])
sugar_content_cereal = [low, high, medium, low]

plt.scatter(
    x=price_orange,
    y=sales_per_day_orange,
    s=profit_margin_orange * 10,
    c=sugar_content_orange,
)
plt.scatter(
    x=price_cereal,
    y=sales_per_day_cereal,
    s=profit_margin_cereal * 10,
    c=sugar_content_cereal,
    marker="d",
)
plt.show()
9 và
# ...

plt.scatter(
    x=price_orange,
    y=sales_per_day_orange,
    s=profit_margin_orange * 10,
    c=sugar_content_orange,
    alpha=0.5,
)
plt.scatter(
    x=price_cereal,
    y=sales_per_day_cereal,
    s=profit_margin_cereal * 10,
    c=sugar_content_cereal,
    marker="d",
    alpha=0.5,
)

plt.title("Sales vs Prices for Orange Drinks and Cereal Bars")
plt.legend(["Orange Drinks", "Cereal Bars"])
plt.xlabel("Price (Currency Unit)")
plt.ylabel("Average weekly sales")
plt.text(
    3.2,
    55,
    "Size of marker = profit margin\n" "Color of marker = sugar content",
)

plt.show()
0 phút qua giờ và tổng hợp chúng. Bạn đặt thời gian đến có khả năng nhất thành giá trị
# ...

plt.scatter(
    x=price_orange,
    y=sales_per_day_orange,
    s=profit_margin_orange * 10,
    c=sugar_content_orange,
    alpha=0.5,
)
plt.scatter(
    x=price_cereal,
    y=sales_per_day_cereal,
    s=profit_margin_cereal * 10,
    c=sugar_content_cereal,
    marker="d",
    alpha=0.5,
)

plt.title("Sales vs Prices for Orange Drinks and Cereal Bars")
plt.legend(["Orange Drinks", "Cereal Bars"])
plt.xlabel("Price (Currency Unit)")
plt.ylabel("Average weekly sales")
plt.text(
    3.2,
    55,
    "Size of marker = profit margin\n" "Color of marker = sugar content",
)

plt.show()
1 bằng cách chia cho giá trị tối đa.

Bây giờ bạn có thể mô phỏng thời gian đến bus bằng cách sử dụng phân phối này. Để làm điều này, bạn có thể tạo thời gian ngẫu nhiên và xác suất tương đối ngẫu nhiên bằng mô-đun

# ...

plt.scatter(
    x=price_orange,
    y=sales_per_day_orange,
    s=profit_margin_orange * 10,
    c=sugar_content_orange,
    alpha=0.5,
)
plt.scatter(
    x=price_cereal,
    y=sales_per_day_cereal,
    s=profit_margin_cereal * 10,
    c=sugar_content_cereal,
    marker="d",
    alpha=0.5,
)

plt.title("Sales vs Prices for Orange Drinks and Cereal Bars")
plt.legend(["Orange Drinks", "Cereal Bars"])
plt.xlabel("Price (Currency Unit)")
plt.ylabel("Average weekly sales")
plt.text(
    3.2,
    55,
    "Size of marker = profit margin\n" "Color of marker = sugar content",
)

plt.show()
2 tích hợp. Trong mã bên dưới, bạn cũng sẽ sử dụng danh sách toàn diện:

import matplotlib.pyplot as plt

price = [2.50, 1.23, 4.02, 3.25, 5.00, 4.40]
sales_per_day = [34, 62, 49, 22, 13, 19]

plt.scatter(price, sales_per_day)
plt.show()
4

Bạn đã mô phỏng

# ...

plt.scatter(
    x=price_orange,
    y=sales_per_day_orange,
    s=profit_margin_orange * 10,
    c=sugar_content_orange,
    alpha=0.5,
)
plt.scatter(
    x=price_cereal,
    y=sales_per_day_cereal,
    s=profit_margin_cereal * 10,
    c=sugar_content_cereal,
    marker="d",
    alpha=0.5,
)

plt.title("Sales vs Prices for Orange Drinks and Cereal Bars")
plt.legend(["Orange Drinks", "Cereal Bars"])
plt.xlabel("Price (Currency Unit)")
plt.ylabel("Average weekly sales")
plt.text(
    3.2,
    55,
    "Size of marker = profit margin\n" "Color of marker = sugar content",
)

plt.show()
3 đến xe buýt, mà bạn có thể hình dung với biểu đồ phân tán sau:

Hướng dẫn create a scatter plot in python - tạo biểu đồ phân tán trong python

Cốt truyện của bạn sẽ trông khác nhau vì dữ liệu bạn tạo là ngẫu nhiên. Tuy nhiên, không phải tất cả các điểm này có khả năng gần với thực tế mà người đi lại quan sát được từ dữ liệu cô thu thập và phân tích. Bạn có thể vẽ sơ đồ phân phối mà cô ấy thu được từ dữ liệu với các xe buýt được mô phỏng:

import matplotlib.pyplot as plt

price = [2.50, 1.23, 4.02, 3.25, 5.00, 4.40]
sales_per_day = [34, 62, 49, 22, 13, 19]

plt.scatter(price, sales_per_day)
plt.show()
5

Điều này cho đầu ra sau:

Hướng dẫn create a scatter plot in python - tạo biểu đồ phân tán trong python

Để giữ cho mô phỏng thực tế, bạn cần đảm bảo rằng các bus đến ngẫu nhiên khớp với dữ liệu và phân phối thu được từ các dữ liệu đó. Bạn có thể lọc các điểm được tạo ngẫu nhiên bằng cách chỉ giữ các điểm nằm trong phân phối xác suất. Bạn có thể đạt được điều này bằng cách tạo mặt nạ cho biểu đồ phân tán:mask for the scatter plot:

import matplotlib.pyplot as plt

price = [2.50, 1.23, 4.02, 3.25, 5.00, 4.40]
sales_per_day = [34, 62, 49, 22, 13, 19]

plt.scatter(price, sales_per_day)
plt.show()
6

Các biến

# ...

plt.scatter(
    x=price_orange,
    y=sales_per_day_orange,
    s=profit_margin_orange * 10,
    c=sugar_content_orange,
    alpha=0.5,
)
plt.scatter(
    x=price_cereal,
    y=sales_per_day_cereal,
    s=profit_margin_cereal * 10,
    c=sugar_content_cereal,
    marker="d",
    alpha=0.5,
)

plt.title("Sales vs Prices for Orange Drinks and Cereal Bars")
plt.legend(["Orange Drinks", "Cereal Bars"])
plt.xlabel("Price (Currency Unit)")
plt.ylabel("Average weekly sales")
plt.text(
    3.2,
    55,
    "Size of marker = profit margin\n" "Color of marker = sugar content",
)

plt.show()
4 và
# ...

plt.scatter(
    x=price_orange,
    y=sales_per_day_orange,
    s=profit_margin_orange * 10,
    c=sugar_content_orange,
    alpha=0.5,
)
plt.scatter(
    x=price_cereal,
    y=sales_per_day_cereal,
    s=profit_margin_cereal * 10,
    c=sugar_content_cereal,
    marker="d",
    alpha=0.5,
)

plt.title("Sales vs Prices for Orange Drinks and Cereal Bars")
plt.legend(["Orange Drinks", "Cereal Bars"])
plt.xlabel("Price (Currency Unit)")
plt.ylabel("Average weekly sales")
plt.text(
    3.2,
    55,
    "Size of marker = profit margin\n" "Color of marker = sugar content",
)

plt.show()
5 là các mảng không có chứa các giá trị boolean dựa trên việc các khả năng được tạo ngẫu nhiên giảm trên hay dưới phân phối
plt.plot(price, sales_per_day, "o")
plt.show()
0. Sau đó, bạn vẽ hai sơ đồ phân tán riêng biệt, một với các điểm nằm trong phân phối và một điểm khác cho các điểm nằm ngoài phân phối. Các điểm dữ liệu nằm trên phân phối không phải là đại diện cho dữ liệu thực:

Hướng dẫn create a scatter plot in python - tạo biểu đồ phân tán trong python

Bạn đã phân đoạn các điểm dữ liệu từ biểu đồ phân tán ban đầu dựa trên việc liệu chúng có nằm trong phân phối và sử dụng một màu và điểm đánh dấu khác để xác định hai bộ dữ liệu hay không.

Xem lại các tham số đầu vào chính

Bạn đã học về các tham số đầu vào chính để tạo các sơ đồ phân tán trong các phần trên. Dưới đây, một bản tóm tắt ngắn gọn về các điểm chính cần nhớ về các tham số đầu vào chính:

Tham sốSự mô tả
import matplotlib.pyplot as plt

price = [2.50, 1.23, 4.02, 3.25, 5.00, 4.40]
sales_per_day = [34, 62, 49, 22, 13, 19]

plt.scatter(price, sales_per_day)
plt.show()
9 và
plt.plot(price, sales_per_day, "o")
plt.show()
0
Các tham số này đại diện cho hai biến chính và có thể là bất kỳ loại dữ liệu giống như mảng nào, chẳng hạn như danh sách hoặc mảng numpy. Đây là những thông số bắt buộc.
# ...

low = (0, 1, 0)
medium = (1, 1, 0)
high = (1, 0, 0)

sugar_content = [low, high, medium, medium, high, low]

plt.scatter(
    x=price,
    y=sales_per_day,
    s=profit_margin * 10,
    c=sugar_content,
)
plt.show()
7
Tham số này xác định kích thước của điểm đánh dấu. Nó có thể là một sự nổi nếu tất cả các điểm đánh dấu có cùng kích thước hoặc cấu trúc dữ liệu giống như mảng nếu các điểm đánh dấu có kích thước khác nhau.
import matplotlib.pyplot as plt
import numpy as np

low = (0, 1, 0)
medium = (1, 1, 0)
high = (1, 0, 0)

price_orange = np.asarray([2.50, 1.23, 4.02, 3.25, 5.00, 4.40])
sales_per_day_orange = np.asarray([34, 62, 49, 22, 13, 19])
profit_margin_orange = np.asarray([20, 35, 40, 20, 27.5, 15])
sugar_content_orange = [low, high, medium, medium, high, low]

price_cereal = np.asarray([1.50, 2.50, 1.15, 1.95])
sales_per_day_cereal = np.asarray([67, 34, 36, 12])
profit_margin_cereal = np.asarray([20, 42.5, 33.3, 18])
sugar_content_cereal = [low, high, medium, low]

plt.scatter(
    x=price_orange,
    y=sales_per_day_orange,
    s=profit_margin_orange * 10,
    c=sugar_content_orange,
)
plt.scatter(
    x=price_cereal,
    y=sales_per_day_cereal,
    s=profit_margin_cereal * 10,
    c=sugar_content_cereal,
)
plt.show()
6
Tham số này đại diện cho màu của các điểm đánh dấu. Nó thường sẽ là một mảng màu, chẳng hạn như các giá trị RGB hoặc một chuỗi các giá trị sẽ được ánh xạ vào colormap bằng tham số
sugar_content_orange = [15, 35, 22, 27, 38, 14]
sugar_content_cereal = [21, 49, 29, 24]
1.
sugar_content_orange = [15, 35, 22, 27, 38, 14]
sugar_content_cereal = [21, 49, 29, 24]
2
Tham số này được sử dụng để tùy chỉnh hình dạng của điểm đánh dấu.
sugar_content_orange = [15, 35, 22, 27, 38, 14]
sugar_content_cereal = [21, 49, 29, 24]
1
Nếu một chuỗi các giá trị được sử dụng cho tham số
import matplotlib.pyplot as plt
import numpy as np

low = (0, 1, 0)
medium = (1, 1, 0)
high = (1, 0, 0)

price_orange = np.asarray([2.50, 1.23, 4.02, 3.25, 5.00, 4.40])
sales_per_day_orange = np.asarray([34, 62, 49, 22, 13, 19])
profit_margin_orange = np.asarray([20, 35, 40, 20, 27.5, 15])
sugar_content_orange = [low, high, medium, medium, high, low]

price_cereal = np.asarray([1.50, 2.50, 1.15, 1.95])
sales_per_day_cereal = np.asarray([67, 34, 36, 12])
profit_margin_cereal = np.asarray([20, 42.5, 33.3, 18])
sugar_content_cereal = [low, high, medium, low]

plt.scatter(
    x=price_orange,
    y=sales_per_day_orange,
    s=profit_margin_orange * 10,
    c=sugar_content_orange,
)
plt.scatter(
    x=price_cereal,
    y=sales_per_day_cereal,
    s=profit_margin_cereal * 10,
    c=sugar_content_cereal,
)
plt.show()
6, thì tham số này có thể được sử dụng để chọn ánh xạ giữa các giá trị và màu sắc, thường bằng cách sử dụng một trong các colormaps tiêu chuẩn hoặc colormap tùy chỉnh.
import matplotlib.pyplot as plt
import numpy as np

low = (0, 1, 0)
medium = (1, 1, 0)
high = (1, 0, 0)

price_orange = np.asarray([2.50, 1.23, 4.02, 3.25, 5.00, 4.40])
sales_per_day_orange = np.asarray([34, 62, 49, 22, 13, 19])
profit_margin_orange = np.asarray([20, 35, 40, 20, 27.5, 15])
sugar_content_orange = [low, high, medium, medium, high, low]

price_cereal = np.asarray([1.50, 2.50, 1.15, 1.95])
sales_per_day_cereal = np.asarray([67, 34, 36, 12])
profit_margin_cereal = np.asarray([20, 42.5, 33.3, 18])
sugar_content_cereal = [low, high, medium, low]

plt.scatter(
    x=price_orange,
    y=sales_per_day_orange,
    s=profit_margin_orange * 10,
    c=sugar_content_orange,
)
plt.scatter(
    x=price_cereal,
    y=sales_per_day_cereal,
    s=profit_margin_cereal * 10,
    c=sugar_content_cereal,
)
plt.show()
9
Tham số này là một phao có thể lấy bất kỳ giá trị nào giữa
sugar_content_orange = [15, 35, 22, 27, 38, 14]
sugar_content_cereal = [21, 49, 29, 24]
6 và
# ...

plt.scatter(
    x=price_orange,
    y=sales_per_day_orange,
    s=profit_margin_orange * 10,
    c=sugar_content_orange,
    alpha=0.5,
)
plt.scatter(
    x=price_cereal,
    y=sales_per_day_cereal,
    s=profit_margin_cereal * 10,
    c=sugar_content_cereal,
    marker="d",
    alpha=0.5,
)

plt.title("Sales vs Prices for Orange Drinks and Cereal Bars")
plt.legend(["Orange Drinks", "Cereal Bars"])
plt.xlabel("Price (Currency Unit)")
plt.ylabel("Average weekly sales")
plt.text(
    3.2,
    55,
    "Size of marker = profit margin\n" "Color of marker = sugar content",
)

plt.show()
1 và thể hiện tính minh bạch của các điểm đánh dấu, trong đó
# ...

plt.scatter(
    x=price_orange,
    y=sales_per_day_orange,
    s=profit_margin_orange * 10,
    c=sugar_content_orange,
    alpha=0.5,
)
plt.scatter(
    x=price_cereal,
    y=sales_per_day_cereal,
    s=profit_margin_cereal * 10,
    c=sugar_content_cereal,
    marker="d",
    alpha=0.5,
)

plt.title("Sales vs Prices for Orange Drinks and Cereal Bars")
plt.legend(["Orange Drinks", "Cereal Bars"])
plt.xlabel("Price (Currency Unit)")
plt.ylabel("Average weekly sales")
plt.text(
    3.2,
    55,
    "Size of marker = profit margin\n" "Color of marker = sugar content",
)

plt.show()
1 đại diện cho một điểm đánh dấu mờ đục.

Đây không phải là các tham số đầu vào duy nhất có sẵn với

plt.plot(price, sales_per_day, "o")
plt.show()
3. Bạn có thể truy cập danh sách đầy đủ các tham số đầu vào từ tài liệu.

Sự kết luận

Bây giờ bạn đã biết cách tạo và tùy chỉnh các sơ đồ phân tán bằng cách sử dụng

plt.plot(price, sales_per_day, "o")
plt.show()
3, bạn đã sẵn sàng để bắt đầu thực hành với các bộ dữ liệu và ví dụ của riêng bạn. Chức năng đa năng này cung cấp cho bạn khả năng khám phá dữ liệu của bạn và trình bày những phát hiện của bạn một cách rõ ràng.

Trong hướng dẫn này, bạn đã học được cách:

  • Tạo một biểu đồ phân tán bằng cách sử dụng ________ 76 ()scatter plot using
    import matplotlib.pyplot as plt
    import numpy as np
    
    low = (0, 1, 0)
    medium = (1, 1, 0)
    high = (1, 0, 0)
    
    price_orange = np.asarray([2.50, 1.23, 4.02, 3.25, 5.00, 4.40])
    sales_per_day_orange = np.asarray([34, 62, 49, 22, 13, 19])
    profit_margin_orange = np.asarray([20, 35, 40, 20, 27.5, 15])
    sugar_content_orange = [low, high, medium, medium, high, low]
    
    price_cereal = np.asarray([1.50, 2.50, 1.15, 1.95])
    sales_per_day_cereal = np.asarray([67, 34, 36, 12])
    profit_margin_cereal = np.asarray([20, 42.5, 33.3, 18])
    sugar_content_cereal = [low, high, medium, low]
    
    plt.scatter(
        x=price_orange,
        y=sales_per_day_orange,
        s=profit_margin_orange * 10,
        c=sugar_content_orange,
    )
    plt.scatter(
        x=price_cereal,
        y=sales_per_day_cereal,
        s=profit_margin_cereal * 10,
        c=sugar_content_cereal,
        marker="d",
    )
    plt.show()
    
    6()
  • Sử dụng các tham số đầu vào cần thiết và tùy chọninput parameters
  • Tùy chỉnh các lô phân tán cho các lô cơ bản và nâng cao hơnbasic and more advanced plots
  • Đại diện cho nhiều hơn hai chiều với
    plt.plot(price, sales_per_day, "o")
    plt.show()
    
    3more than two dimensions with
    plt.plot(price, sales_per_day, "o")
    plt.show()
    
    3

Bạn có thể tận dụng tối đa trực quan hóa bằng cách sử dụng

plt.plot(price, sales_per_day, "o")
plt.show()
3 bằng cách tìm hiểu thêm về tất cả các tính năng trong matplotlib và xử lý dữ liệu bằng cách sử dụng Numpy.

Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem cùng với hướng dẫn bằng văn bản để hiểu sâu hơn về sự hiểu biết của bạn: Sử dụng plt.scatter () để trực quan hóa dữ liệu trong Python This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Using plt.scatter() to Visualize Data in Python

Chức năng nào sẽ tạo ra sơ đồ phân tán trong Python?

Matplotlib có chức năng tích hợp để tạo các biểu đồ phân tán được gọi là scatter ().scatter() .

Việc sử dụng phương thức scatter () trong python *là gì?

Chức năng phân tán () trong matplotlib được sử dụng để tạo ra một biểu đồ phân tán.Để hiểu thêm, mô -đun PyPlot có hàm gọi là scatter (), trong số nhiều chức năng khác, giúp tạo hoặc vẽ một biểu đồ phân tán.to create a scatter plot. For further understanding, the pyplot module has a function called scatter() , among many other functions, which helps to create or draw a scatter plot.