Hướng dẫn python plot map - bản đồ âm mưu trăn

32

Nội dung chính ShowShow

  • Biểu đồ mật độ 2D là gì?
  • Biểu đồ đường viền với Seaborn
  • Biểu đồ 2D với Seaborn
  • Biểu đồ hexbin với Matplotlib
  • Biểu đồ mật độ 2D với Matplotlib
  • Mật độ 2D và lô cận biên
  • Làm thế nào để bạn vẽ một bản đồ trong Python?
  • Làm thế nào để bạn vẽ một lô mật độ?
  • Lô mật độ trong gấu trúc là gì?
  • Làm thế nào để bạn vẽ một bản đồ nhiệt 2D trong Python?

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.
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 python plot map - bản đồ âm mưu trăn

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

Nối

80.1K41 Huy hiệu vàng182 Huy hiệu bạc255 Huy hiệu đồng41 gold badges182 silver badges255 bronze badges41 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: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:

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

AndiandiAndiAndi

1.21311 huy hiệu bạc17 Huy hiệu đồng11 silver badges17 bronze badges11 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

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"`
4

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

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

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.

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

HookedhookedHookedHooked

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

4


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

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

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.

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:

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

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

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

AndiandiAndi

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

Biểu đồ 2D với Seaborn

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

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"`
4

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

Biểu đồ hexbin với Matplotlib

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

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

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

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

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

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

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

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

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

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

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

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

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 đó.

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

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

Lô mật độ trong gấu trúc là gì?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.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,.