Pandapower中绘制IEEE-33总线网络时遇到的索引错误解析
在使用Pandapower进行电力系统仿真分析时,绘制网络拓扑图是一个常见需求。本文针对用户在绘制IEEE-33总线网络时遇到的"None of [Int64Index...] are in the [index]"错误进行深入分析,并提供解决方案。
问题现象
用户在尝试绘制IEEE-33总线网络时,执行了以下代码:
plot.fuse_geodata(net)
bc = plot.create_bus_collection(net, net.bus.index, size=.2, color=colors[0], zorder=10)
tlc, tpc = plot.create_trafo_collection(net, net.trafo.index, color="g")
lcd = plot.create_line_collection(net, net.line.index, color="grey", linewidths=0.5, use_bus_geodata=True)
sc = plot.create_bus_collection(net, net.ext_grid.bus.values, patch_type="rect", size=.5, color="y", zorder=11)
plot.draw_collections([lcd, bc, tlc, tpc, sc], figsize=(8,6))
但在执行第二行代码时,系统报错提示"None of [Int64Index...] are in the [index]",表明存在索引不匹配的问题。
错误原因分析
该错误的核心原因是网络中没有正确设置总线地理坐标数据(bus_geodata)。具体来说:
plot.fuse_geodata(net)函数调用可能没有正确生成或分配总线地理坐标数据- 当尝试使用
create_bus_collection创建总线集合时,系统无法找到对应索引的地理坐标数据 - 错误信息中的Int64Index显示系统尝试访问的总线索引与现有索引不匹配
解决方案
针对这一问题,正确的做法是:
- 使用Pandapower内置的IEEE-33总线网络案例,该案例已包含正确的地理坐标数据
- 避免使用可能干扰地理坐标数据的
plot.fuse_geodata函数 - 简化绘图代码,只绘制必要的元素
修正后的代码如下:
import pandapower as pp
import pandapower.networks as pn
import pandapower.plotting as plot
import seaborn as sns
import matplotlib.pyplot as plt
colors = sns.color_palette('colorblind')
net = pn.case33bw() # 使用内置的IEEE-33总线网络
# 创建绘图元素
bc = plot.create_bus_collection(net, net.bus.index, size=.2, color=colors[0], zorder=10)
lcd = plot.create_line_collection(net, net.line.index, color="grey", linewidths=0.5, use_bus_geodata=True)
sc = plot.create_bus_collection(net, net.ext_grid.bus.values, patch_type="rect", size=.5, color="y", zorder=11)
# 绘制图形
plot.draw_collections([lcd, bc, sc], figsize=(8,6))
plt.show()
技术要点说明
-
内置网络数据:
pn.case33bw()提供了标准的IEEE-33总线网络,包含完整的拓扑和地理坐标信息。 -
绘图元素创建:
create_bus_collection:创建总线集合,需要指定总线索引、大小、颜色等参数create_line_collection:创建线路集合,use_bus_geodata=True表示使用总线地理坐标自动计算线路位置
-
地理坐标数据:Pandapower绘图依赖于
bus_geodata数据框,其中包含每个总线的x、y坐标信息。内置网络已包含这些数据,自定义网络需要手动添加。
扩展建议
对于自定义网络的绘制,建议:
- 确保网络对象中包含
bus_geodata数据框 - 可以使用
pp.plotting.create_generic_coordinates(net)自动生成基本的地理坐标 - 对于复杂网络,可以手动调整
bus_geodata中的坐标值以获得更好的可视化效果
通过以上方法,用户可以顺利绘制出IEEE-33总线网络图,并避免索引不匹配的错误。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



