1
$\begingroup$

I have the following list of 3by3 dimension as an example (the listtot gives me the corresponding energy (ex:37.752812298486035) for each angle set (ex:{0., 0.3141592653589793, 0.6283185307179586, 0.9424777960769379, 1.2566370614359172, 1.5707963267948966`}) of 6 electrons) and I want to plot the data to show clearly how the energy changes when the electrons' spins maintaining different angles with respect to each other (to do that I thought of using ListPlot3D, but if you have better ideas I appreciate that a lot):

  listtot = {{{37.752812298486035`, {0.`, 0.3141592653589793`, 
  0.6283185307179586`, 0.9424777960769379`, 1.2566370614359172`, 
  1.5707963267948966`}, {1, 2, 3, 4, 5, 
  6}}, {37.752812298486035`, {0.`, 0.3141592653589793`, 
  0.6283185307179586`, 0.9424777960769379`, 1.2566370614359172`, 
  1.5707963267948966`}, {1, 2, 3, 4, 5, 
  6}}, {37.752812298486035`, {0.`, 0.3141592653589793`, 
  0.6283185307179586`, 0.9424777960769379`, 1.2566370614359172`, 
  1.5707963267948966`}, {1, 2, 3, 4, 5, 
  6}}}, {{37.752812298486035`, {0.`, 0.3141592653589793`, 
  0.6283185307179586`, 0.9424777960769379`, 1.2566370614359172`, 
  1.5707963267948966`}, {1, 2, 3, 4, 5, 
  6}}, {37.11781609966486`, {0.`, 0.2630862667406051`, 
  0.6283185307179586`, 0.9424777960769379`, 1.2566370614359172`, 
  1.5707963267948966`}, {1, 2, 3, 4, 5, 
  6}}, {34.125297721219795`, {0.`, 0.2630862667406051`, 
  0.6283185307179586`, 0.9424777960769379`, 1.4818657793200891`, 
  1.5707963267948966`}, {1, 2, 3, 4, 5, 
  6}}}, {{33.522683744885754`, {0.`, 0.2630862667406051`, 
  0.6283185307179586`, 0.9424777960769379`, 1.5233731698273567`, 
  1.5707963267948966`}, {1, 2, 3, 4, 5, 
  6}}, {33.522683744885754`, {0.`, 0.2630862667406051`, 
  0.6283185307179586`, 0.9424777960769379`, 1.5233731698273565`, 
  1.5707963267948966`}, {1, 2, 3, 4, 5, 
  6}}, {33.39466567365792`, {0.`, 0.2630862667406051`, 
  0.6283185307179586`, 0.5455129752218801`, 1.5233731698273565`, 
  1.5707963267948966`}, {1, 2, 3, 4, 5, 6}}}};

I should rearrange my data as following to use it in ListPlot3D:

  Thread[{#3, #2, #1}] & @@ listtot[[1]][[1]]

Now for every listtot[[i]][[j]] in which i and j are changing between 1&3, I need to store the data on a different list and plot all of them in one graph. I was thinking about writing the code to do the following procedure (which I need help with):

list1=Thread[{#3, #2, #1}] & @@listtot[[1]][[1]]

list2=Thread[{#3, #2, #1}] & @@listtot[[1]][[2]]

list3=Thread[{#3, #2, #1}] & @@listtot[[1]][[3]]

list4=Thread[{#3, #2, #1}] & @@listtot[[2]][[1]]

list5=Thread[{#3, #2, #1}] & @@listtot[[2]][[2]]

list6=Thread[{#3, #2, #1}] & @@listtot[[2]][[3]]

list7=Thread[{#3, #2, #1}] & @@listtot[[3]][[1]]

list8=Thread[{#3, #2, #1}] & @@listtot[[3]][[2]]

list9=Thread[{#3, #2, #1}] & @@listtot[[3]][[3]]

I need to write something like:

 ListPlot3D[{list1, list2, list3,...}, InterpolationOrder -> 0, 
 AxesLabel -> {"electron index", "spin angle", "energy"}, 
 BaseStyle -> 12, ImageSize -> 400]

and I am asking for a way to write {list1, list2, list3,...,list9} or in other words to store the data in various lists: list1,... and plot them ;

again I appreciate any other method in case you have different ideas to show the data.

$\endgroup$

1 Answer 1

1
$\begingroup$
lists1thru9 = Join @@ Map[Thread@*Reverse, listtot, {2}];

ListPlot3D[lists1thru9, InterpolationOrder -> 0, 
 AxesLabel -> {"electron index", "spin angle", "energy"}, 
 BaseStyle -> 12, ImageSize -> 400]

enter image description here

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.