【发布时间】:2020-08-27 09:45:22
【问题描述】:
问题是从一个文件中读取 10,000 个坐标点,并根据网格上每个块的密度创建一个彩色网格。 x 轴的范围是 [-73.59, -73.55],y 轴的范围是 [45.49,45.530]。我的代码将绘制一个具有许多不同颜色的网格,现在我需要一个功能来只为具有特定密度 n 的网格着色,例如,n = 100,只有具有 100 点或更高点的网格才会被着色为黄色,其他网格将是黑色的。
我刚刚添加了一个指向我的 shapefile 的链接 https://drive.google.com/open?id=1H-8FhfonnPrYW9y7RQZDtiNLxVEiC6R8
import numpy as np
import matplotlib.pyplot as plt
import shapefile
grid_size = 0.002
x1 = np.arange(-73.59,-73.55,grid_size)
y1 = np.arange(45.49,45.530,grid_size)
shape = shapefile.Reader("Shape/crime_dt.shp",encoding='ISO-8859-1')
shapeRecords = shape.shapeRecords()
x_coordinates=[]
y_coordinates=[]
# read all points in .shp file, and store them in 2 lists.
for k in range(len(shapeRecords)):
x = float(shapeRecords[k].shape.__geo_interface__["coordinates"][0])
y = float(shapeRecords[k].shape.__geo_interface__["coordinates"][1])
x_coordinates.append(x)
y_coordinates.append(y)
plt.hist2d(x_coordinates,y_coordinates,bins=[x1,y1])
plt.show()
【问题讨论】:
-
由于我们没有您的 shapefile,您可能想要制作一个可复制的玩具示例minimal reproducible example
-
@anishtain4 我刚刚添加了一个指向我的 shapefile 的链接,数据是开源的,所以没问题。
标签: python matplotlib