python - Python:绘制负(x,y)坐标的频率
问题描述
我正在尝试从(0,0)开始绘制二维整数随机游走的频率。首先,我得到一个 (x,y) 坐标列表,其中一些是负数,我在以正确的方式绘制它们时遇到问题。我知道我当前的尝试是错误的,因为 (0,0) 有时看起来根本不在随机游走中。
这是我的尝试:
这个想法是转置所有 (x,y) 坐标,因此它们位于第一象限,然后操纵轴extent
将它们转置回其原始形式。我这样做是为了避免在构造 中不需要的列表操作grid
,这会使情节“跳跃”
# generate random walk
import random
def random_walk():
a = 0
b = 0
while True:
yield (a, b)
i = random.choice([0, 1])
if i == 0:
a = random.choice([a-1, a+1])
else:
b = random.choice([b-1, b+1])
并尝试绘制自己:
import matplotlib.pyplot as plt
import itertools
import numpy as np
# generate random walk of length 1000
walk = list(itertools.islice(random_walk(), 0, 1000))
xy = list(zip(*walk))
x = list(xy[0])
y = list(xy[1])
ext = (min(x), max(x), min(y), max(y))
min_x = min(x)
min_y = min(y)
# transpose all x.- and y.-coordinates:
for i in range(len(x)):
x[i] -= min_x
for i in range(len(y)):
y[i] -= min_y
walk_new = list(zip(x,y))
grid = np.zeros((max(x) + 1, max(y) + 1))
# Put frequencies in grid:
for a,b in walk_new:
grid[a][b] += 1
plt.imshow(grid)
plt.colorbar()
解决方案
我确实注意到,当我运行您的代码时,原点 (0,0) 没有按预期显示在您的热图中。我保留了您的 random_walk 函数,但我认为在这里使用 matplotlib 的 hist2d 会更容易,因为 (x,y) 坐标完全按照您的喜好显示,无需转置您生成的坐标。
import matplotlib.pyplot as plt
import itertools
import numpy as np
# generate random walk of length 1000
walk = list(itertools.islice(random_walk(), 0, 1000))
xy = list(zip(*walk))
x = list(xy[0])
y = list(xy[1])
heatmap, xedges, yedges = np.histogram2d(x, y, bins=[np.arange(min(x),max(x),1),np.arange(min(y),max(y),1)])
extent = [xedges[0], xedges[-1], yedges[0], yedges[-1]]
plt.imshow(heatmap, origin='lower', extent=extent)
# set bins to be 1 unit apart since your (x,y) coordinates are integers
# plt.hist2d(x,y, bins=[np.arange(min(x),max(x),1),np.arange(min(y),max(y),1)])
plt.colorbar()
plt.show()
推荐阅读
- r - 如何将参数传递给 plot.surface() [R fields package] 内部的 contour()
- php - 在 bluehost 上为 mysql 设置远程访问
- python - 模板从日期起休息一天
- jupyter-notebook - 如何从 Jupyter 中更改 Jupyter 内核和 conda 环境?
- php - 当存在某些查询字符串时定义 Laravel 路由
- r - 无法将文件保存到闪亮应用的服务器端
- visual-studio-code - 如何在 Visual Studio Code 中触发参数提示?
- javascript - 通过选择菜单更改工具提示的效果
- .htaccess - htaccess 使用搜索查询重定向
- git - 无法进入野牛构建引导程序