from mpl_toolkits.mplot3d import Axes3D import matplotlib.patches as mpatches import matplotlib.pyplot as plt import numpy as np import csv @interact def fun(ang=slider(0,360,1,default=100,label='angle')): d=[] l=[] a=[] n=[] with open('data.csv','r') as csvfile: data = csv.reader(csvfile, delimiter=' ', skipinitialspace='true') for row in data: d.append(float(row[0])) l.append(float(row[1].replace(",","."))) a.append(float(row[2])) n.append(float(row[3])) fig = plt.figure() ax = fig.add_subplot(111, projection='3d') xpos=d ypos=l zpos=n color=['b']*len(n) for i in [i for i,x in enumerate(a) if x==125]: color[i]='r' xpos[i]=xpos[i]+0.3 ypos[i]=ypos[i]-0.05 for i in [i for i,x in enumerate(a) if x==150]: color[i]='g' xpos[i]=xpos[i]-0.3 ypos[i]=ypos[i]+0.05 for i in [i for i,x in enumerate(a) if x==175]: color[i]='c' xpos[i]=xpos[i]+0.3 ypos[i]=ypos[i]+0.05 for i in [i for i,x in enumerate(a) if x==200]: color[i]='m' xpos[i]=xpos[i]-0.3 for i in [i for i,x in enumerate(a) if x==225]: color[i]='y' xpos[i]=xpos[i]-0.3 ypos[i]=ypos[i]-0.05 ax.bar3d([x-0.1 for x in xpos], [y-0.025 for y in ypos], np.zeros_like(zpos), 0.2*np.ones_like(zpos), 0.05*np.ones_like(zpos), zpos, color, zsort='average', alpha=0.8) plt.legend(handles=[mpatches.Patch(color='b', label='100'),mpatches.Patch(color='r', label='125'),mpatches.Patch(color='g', label='150'),mpatches.Patch(color='c', label='175'),mpatches.Patch(color='m', label='200'),mpatches.Patch(color='y', label='225')],loc='upper left') ax.view_init(30, ang) plt.show() from matplotlib.backends.backend_pdf import PdfPages with PdfPages('data.pdf') as pdf: pdf.savefig(fig)
Interact: please open in CoCalc