Hướng dẫn how do you plot a density map in python? - làm thế nào để bạn vẽ một bản đồ mật độ trong python?

32

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ó một tệp .txt chứa các giá trị x, y của các điểm cách đều nhau thường xuyên trong bản đồ 2D, tọa độ thứ 3 là mật độ tại điểm đó.

4.882812500000000E-004  4.882812500000000E-004  0.9072267
1.464843750000000E-003  4.882812500000000E-004   1.405174
2.441406250000000E-003  4.882812500000000E-004   24.32851
3.417968750000000E-003  4.882812500000000E-004   101.4136
4.394531250000000E-003  4.882812500000000E-004   199.1388
5.371093750000000E-003  4.882812500000000E-004   1278.898
6.347656250000000E-003  4.882812500000000E-004   1636.955
7.324218750000000E-003  4.882812500000000E-004   1504.590
8.300781250000000E-003  4.882812500000000E-004   814.6337
9.277343750000000E-003  4.882812500000000E-004   273.8610

Khi tôi vẽ bản đồ mật độ này trong gnuplot, với các lệnh sau:

set palette rgbformulae 34,35,0
set size square
set pm3d map
splot "dens_map.map" u 1:2:(log10($3+10.)) title "Density map"`

Mà mang lại cho tôi hình ảnh đẹp này:

Hướng dẫn how do you plot a density map in python? - làm thế nào để bạn vẽ một bản đồ mật độ trong python?

Bây giờ tôi muốn có kết quả tương tự với matplotlib.

Hướng dẫn how do you plot a density map in python? - làm thế nào để bạn vẽ một bản đồ mật độ trong python?

Nối

80.1K41 Huy hiệu vàng182 Huy hiệu bạc255 Huy hiệu đồng41 gold badges182 silver badges255 bronze badges

Đã hỏi ngày 9 tháng 6 năm 2014 lúc 12:04Jun 9, 2014 at 12:04

2

Dưới đây là mục tiêu của tôi là một câu trả lời đầy đủ hơn bao gồm chọn bản đồ màu và bình thường hóa logarit của trục màu.

import matplotlib.pyplot as plt
import matplotlib.cm as cm
from matplotlib.colors import LogNorm
import numpy as np
x, y, z = np.loadtxt('data.txt', unpack=True)
N = int(len(z)**.5)
z = z.reshape(N, N)
plt.imshow(z+10, extent=(np.amin(x), np.amax(x), np.amin(y), np.amax(y)),
        cmap=cm.hot, norm=LogNorm())
plt.colorbar()
plt.show()

Tôi giả sử ở đây rằng dữ liệu của bạn có thể được chuyển thành một mảng 2D bằng cách định hình lại đơn giản. Nếu đây không phải là trường hợp bạn cần làm việc chăm chỉ hơn một chút trong việc lấy dữ liệu trong biểu mẫu này. Sử dụng imshow và không pcolormesh sẽ hiệu quả hơn ở đây nếu dữ liệu của bạn nằm trên lưới (như dường như nó làm). Đoạn trích mã trên dẫn đến hình ảnh sau, đến khá gần với những gì bạn muốn:

Hướng dẫn how do you plot a density map in python? - làm thế nào để bạn vẽ một bản đồ mật độ trong python?

Đã trả lời ngày 9 tháng 6 năm 2014 lúc 14:57Jun 9, 2014 at 14:57

Hướng dẫn how do you plot a density map in python? - làm thế nào để bạn vẽ một bản đồ mật độ trong python?

AndiandiAndi

1.21311 huy hiệu bạc17 Huy hiệu đồng11 silver badges17 bronze badges

Nhận xét từ @YRY là tốt, nhưng một câu trả lời làm việc tối thiểu hoàn toàn (với hình ảnh!) Là tốt hơn. Sử dụng plt.pcolormesh

import pylab as plt
import numpy as np

# Sample data
side = np.linspace(-2,2,15)
X,Y = np.meshgrid(side,side)
Z = np.exp(-((X-1)**2+Y**2))

# Plot the density map using nearest-neighbor interpolation
plt.pcolormesh(X,Y,Z)
plt.show()

Hướng dẫn how do you plot a density map in python? - làm thế nào để bạn vẽ một bản đồ mật độ trong python?

Nếu dữ liệu trông giống như mẫu của bạn, Numpy có thể tải nó bằng lệnh numpy.genfromtext.

Đã trả lời ngày 9 tháng 6 năm 2014 lúc 13:52Jun 9, 2014 at 13:52

Hướng dẫn how do you plot a density map in python? - làm thế nào để bạn vẽ một bản đồ mật độ trong python?

HookedhookedHooked

80.1K41 Huy hiệu vàng182 Huy hiệu bạc255 Huy hiệu đồng41 gold badges182 silver badges255 bronze badges

4


Phần này giải thích cách xây dựng biểu đồ mật độ 2D hoặc biểu đồ 2D với Python. Các loại biểu đồ cho phép trực quan hóa phân phối kết hợp của hai biến định lượng. Chúng có thể được xây dựng với Matplotlib hoặc Seaborn.

Biểu đồ mật độ 2D là gì?

Có một số loại biểu đồ cho phép trực quan hóa phân phối kết hợp 2 biến số. Chúng luôn có một biến được biểu thị trên trục X, cái còn lại trên trục y, giống như cho một biểu đồ phân tán (trái).

Sau đó, số lượng quan sát trong một khu vực cụ thể của không gian 2D được tính và biểu thị bằng một gradient màu. Hình dạng có thể thay đổi: Hexagones dẫn đến hexbin chart, hình vuông trong 2d histogram. Ước tính mật độ hạt nhân có thể được sử dụng để có được ____10 hoặc

set palette rgbformulae 34,35,0
set size square
set pm3d map
splot "dens_map.map" u 1:2:(log10($3+10.)) title "Density map"`
1

Gây nhầm lẫn? Truy cập dữ liệu-đến-viz để làm rõ ..

Biểu đồ đường viền với Seaborn

Biểu đồ đường viền có thể dễ dàng được xây dựng nhờ chức năng

set palette rgbformulae 34,35,0
set size square
set pm3d map
splot "dens_map.map" u 1:2:(log10($3+10.)) title "Density map"`
3 của Thư viện Seaborn.

Biểu đồ 2D với Seaborn

Xây dựng biểu đồ 2D nhờ hàm

set palette rgbformulae 34,35,0
set size square
set pm3d map
splot "dens_map.map" u 1:2:(log10($3+10.)) title "Density map"`
5 của thư viện Seaborn. Đừng quên chơi với đối số
set palette rgbformulae 34,35,0
set size square
set pm3d map
splot "dens_map.map" u 1:2:(log10($3+10.)) title "Density map"`
7 để tìm giá trị đại diện cho dữ liệu tốt nhất của bạn.

Biểu đồ hexbin với Matplotlib

Tách diện tích đồ thị thành hình lục giác và bạn nhận được biểu đồ mật độ hexbin. Lần này, đó là

set palette rgbformulae 34,35,0
set size square
set pm3d map
splot "dens_map.map" u 1:2:(log10($3+10.)) title "Density map"`
9 giúp bạn được bảo hiểm nhờ chức năng
import matplotlib.pyplot as plt
import matplotlib.cm as cm
from matplotlib.colors import LogNorm
import numpy as np
x, y, z = np.loadtxt('data.txt', unpack=True)
N = int(len(z)**.5)
z = z.reshape(N, N)
plt.imshow(z+10, extent=(np.amin(x), np.amax(x), np.amin(y), np.amax(y)),
        cmap=cm.hot, norm=LogNorm())
plt.colorbar()
plt.show()
0 của nó.

Biểu đồ mật độ 2D với Matplotlib

Mật độ 2D được tính toán nhờ hàm

import matplotlib.pyplot as plt
import matplotlib.cm as cm
from matplotlib.colors import LogNorm
import numpy as np
x, y, z = np.loadtxt('data.txt', unpack=True)
N = int(len(z)**.5)
z = z.reshape(N, N)
plt.imshow(z+10, extent=(np.amin(x), np.amax(x), np.amin(y), np.amax(y)),
        cmap=cm.hot, norm=LogNorm())
plt.colorbar()
plt.show()
2 và được vẽ cảm ơn với chức năng
import matplotlib.pyplot as plt
import matplotlib.cm as cm
from matplotlib.colors import LogNorm
import numpy as np
x, y, z = np.loadtxt('data.txt', unpack=True)
N = int(len(z)**.5)
z = z.reshape(N, N)
plt.imshow(z+10, extent=(np.amin(x), np.amax(x), np.amin(y), np.amax(y)),
        cmap=cm.hot, norm=LogNorm())
plt.colorbar()
plt.show()
3 của
import matplotlib.pyplot as plt
import matplotlib.cm as cm
from matplotlib.colors import LogNorm
import numpy as np
x, y, z = np.loadtxt('data.txt', unpack=True)
N = int(len(z)**.5)
z = z.reshape(N, N)
plt.imshow(z+10, extent=(np.amin(x), np.amax(x), np.amin(y), np.amax(y)),
        cmap=cm.hot, norm=LogNorm())
plt.colorbar()
plt.show()
4.

Mật độ 2D và lô cận biên

Mật độ 2D thường kết hợp với phân phối cận biên. Nó giúp làm nổi bật phân phối của cả hai biến riêng lẻ. Thật là đơn giản để thêm nhờ vào chức năng

import matplotlib.pyplot as plt
import matplotlib.cm as cm
from matplotlib.colors import LogNorm
import numpy as np
x, y, z = np.loadtxt('data.txt', unpack=True)
N = int(len(z)**.5)
z = z.reshape(N, N)
plt.imshow(z+10, extent=(np.amin(x), np.amax(x), np.amin(y), np.amax(y)),
        cmap=cm.hot, norm=LogNorm())
plt.colorbar()
plt.show()
5 của thư viện Seaborn.

Làm thế nào để bạn vẽ một bản đồ trong Python?

Theo liên kết này để biết thêm ...
Nhập thư viện. Trong [1]: Nhập gấu trúc dưới dạng PD Nhập Geopandas dưới dạng Nhập GPD matplotlib.pyplot dưới dạng plt ..
Đọc tệp dữ liệu. Trong [2]: df = pd. ....
Đọc tập tin hình dạng. Trong [3]: shp_gdf = gpd. ....
Hợp nhất tệp dữ liệu và tệp hình dạng dựa trên tên của các quốc gia Ấn Độ. Trong [4]: ​​....
Bản đồ âm mưu của Ấn Độ ..

Làm thế nào để bạn vẽ một lô mật độ?

Để tạo biểu đồ mật độ trong R, bạn có thể vẽ đồ thị đối tượng được tạo bằng hàm mật độ R, điều đó sẽ vẽ đường cong mật độ trong cửa sổ R mới. Bạn cũng có thể phủ lên đường cong mật độ trên biểu đồ R với hàm dòng. Kết quả là hàm mật độ thực nghiệm.plot the object created with the R density function, that will plot a density curve in a new R window. You can also overlay the density curve over an R histogram with the lines function. The result is the empirical density function.

Lô mật độ trong gấu trúc là gì?

Pandas có thể giúp tạo ra nhiều loại biểu đồ phân tích dữ liệu.Một ví dụ như vậy là âm mưu mật độ.Các sơ đồ mật độ vẽ đồ thị liên tục và có thể giúp quan sát sự phân phối của một biến trong bộ dữ liệu.Giống như biểu đồ, sơ đồ mật độ sử dụng thùng, nhưng sau đó làm mịn các cạnh để giảm nhiễu.plot a continuous graph and can help to observe the distribution of a variable in a dataset. Like histograms, density plots use bins, but then smooth out the edges to reduce noise.

Làm thế nào để bạn vẽ một bản đồ nhiệt 2D trong Python?

Cú pháp: matplotlib.pyplot.imshow (x, cmap = none, Norm = none, Aspect = none, internpolation = none, alpha = none, vmin = none, ....
Cú pháp: Seaborn.HeatMap (dữ liệu, *, vmin = none, vmax = none, cmap = none, centre = none, mạnh mẽ = false, annot = none, ....
Cú pháp: matplotlib.pyplot.pcolormesh (*args, alpha = none, Norm = none, cmap = none, vmin = none, vmax = none,.