我有以下的pandas框架:
import pandas as pd
pd.DataFrame({'cl': {0: 'A', 1: 'C', 2: 'H', 3: 'M', 4: 'S'},
'd': {0: 245.059986986012,
1: 320.49044143557785,
2: 239.79023081978914,
3: 263.38325791238833,
4: 219.53334398353175},
'p': {0: 10.971011721360075,
1: 10.970258360366753,
2: 13.108487516946218,
3: 12.93241352743668,
4: 13.346107628161008}})
cl d p
0 A 245.059987 10.971012
1 C 320.490441 10.970258
2 H 239.790231 13.108488
3 M 263.383258 12.932414
4 S 219.533344 13.346108
字符串
我想创建一个Voronoi图。为此,我使用package from scipy。
我使用以下代码:
import numpy as np
import matplotlib.pyplot as plt
from scipy.spatial import Voronoi, voronoi_plot_2d
centers2 = np.array(
centers_dt[['d', 'p']]
)
scatter_x = np.array(centers_dt['d'])
scatter_y = np.array(centers_dt['p'])
group = np.array(centers_dt['cl'])
cdict = {'C': 'red', 'A': 'blue', 'H': 'green', 'M': 'yellow', 'S': 'black'}
fig, ax = plt.subplots()
for g in np.unique(group):
ix = np.where(group == g)
ax.scatter(scatter_x[ix], scatter_y[ix], c = cdict[g], label = g, s = 100)
ax.legend()
vor = Voronoi(centers2)
fig = voronoi_plot_2d(vor,plt.gca())
plt.show()
plt.close()
型
但我得到的结果是出乎意料的:
的数据
因为有一个寄宿生失踪加上寄宿生似乎有点小康。
有什么想法吗?
1条答案
按热度按时间n3ipq98p1#
voronoi_plot_2d
中的代码绘制了有限长度的线段,即使是应该延伸到无穷大的边界。voronoi_plot_2d
选择的默认轴限制可能不会在图中显示边界线段,因为vorono_plot_2d
选择的有限长度太小,无法延伸到显示的窗口中。这是我从你的代码中得到的图,如果我添加
plt.ylim(-400, 400)
。的数据
请注意,从最低交点向上延伸的虚线应该继续向上延伸到无穷远,但代码只绘制了有限的线段。
还要注意的是,坐标轴的比例并不相等,因此点之间的分界线看起来并不垂直于连接点的线。
的