Визуализация диполей большой системы с помощью Matplotlib - PullRequest
1 голос
/ 16 января 2020

У меня есть файл данных, который содержит дипольные моменты и координаты диполей. Он имеет 6 столбцов, первые 3 столбца для координат и последние три для дипольных моментов. Также у него есть данные для разных временных шагов, позвольте мне назвать эти кадры.

# TIMESTEP 350000 0.000000  0.000000  0.000000 406.427474 203.221744 247.500000 
3.852  1.909 22.872       0.00150219       0.00112514      -0.00643028  
3.715  1.854 27.033      -0.00038816      -0.00103382       0.00692119  
3.597  1.860 31.078       0.00048117      -0.00063481       0.00745092  
3.428  1.862 35.215       0.00064382       0.00016735       0.00891062  
3.314  1.930 39.330      -0.00062401       0.00061499       0.00743703  
3.144  1.920 43.449       0.00056694      -0.00012774       0.00743086  
..
.. 
# TIMESTEP 350500 0.000000  0.000000  0.000000 406.427474 203.221744 247.500000 
3.852  1.909 22.872       0.00150219       0.00112514      -0.00643028  
3.715  1.854 27.033      -0.00038816      -0.00103382       0.00692119  
3.597  1.860 31.078       0.00048117      -0.00063481       0.00745092  
..
..

В каждом кадре есть приблизительно 200 000 точек данных, диполей, которые я хотел бы представить. Я попробовал колчан, но со слишком большим количеством стрелок ничего не было видно. Лучшим подходом было просто отобразить z-компонент диполей - что наиболее актуально для меня - и использовать тепловую карту с

ax.set(xlim=(X.min(),X.max()), ylim=(Y.min(),Y.max() ) )
cmap = plt.get_cmap('seismic')
levels = MaxNLocator(nbins=100).tick_values(-Plim, Plim)

Результат был примерно таким:

enter image description here

Но все же я не доволен этим подходом, во-первых, это двумерная проекция, во-вторых, я теряю много информации, используя MaxNLocator. Есть ли лучший подход для такой визуализации? Было бы полезно, если бы я мог уменьшить количество диполей, просто рассчитав локальные средние значения, то есть увеличив размер me sh. Существует ли ярлык для вычисления локальных средних значений, например, среднего значения каждого диполя и его первых соседей, чтобы уменьшить количество стрелок и сделать его более заметным?

...