رسم رسم بياني ثلاثي المحاور كشبكة
سؤال
لقد رأيت مخططات سطحية ثلاثية الأبعاد من البيانات من قبل ولكني لا أعرف ما هو البرنامج الذي يمكنني استخدامه لإنشاء ذلك.
لدي 3 سلاسل من البيانات (X، Y، Z) بشكل أساسي أريد أن يكون كل صف من الصفوف الموجودة على الطاولة نقطة في مساحة ثلاثية الأبعاد، وكلها متصلة كشبكة.البيانات حاليًا هي ملف CSV، ولكن يمكنني تغيير التنسيق، حيث إنها بيانات قمت بإنشائها بنفسي.
هل أستطيع مساعدتك
المحلول
وإذا كان لديك س و ص نقاط تكمن طبوغرافيا على الشبكة، ثم يمكنك استخدام MESH. أنها لا تحتاج إلى أن يكون حتى التباعد. فهي تحتاج فقط إلى أن تنظم بحيث العاشر (ص: ص + 1، ج: ج + 1) و y (ص: ص + 1، ج: ج + 1) تحدد الرباعي على شبكة الخاصة بك، على كل ص الصفوف والأعمدة ج.
وإذا كانت البيانات لا تكذب على الشبكة، ولكن هل تعرف ما ينبغي أن تكون وجوه، والنظر في وظيفة PATCH.
إذا كان لديك نقاط فقط وكنت لا تعرف أي شيء عن السطح، وتحتاج إلى حل أولا في إعادة الإعمار سطح المشكلة. لقد cocone المستخدمة؛ هناك مجموعات أخرى جيدة هناك أيضا. وبمجرد الانتهاء من السطح أعيد بناؤها، ثم يمكنك استخدام PATCH لعرضه.
نصائح أخرى
وما يلي نص برمجي لسايلاب التي كتبت حظة العودة. يقرأ في ثلاثة أعمدة مفصولة علامات التبويب. يمكنك بسهولة تغيير هذه لتناسب احتياجاتك، جميلة الذاتي التفسيرية. هنا هو دليل سريع ل / الكتابة في سايلاب واحد I الرجوع أدناه هنا :
function plot_from_file(datafile)
//
// Make a simple x-y-z plot based on values read from a datafile.
// We assume that the datafile has three columns of floating-point
// values seperated by tabs.
// set verbose = 1 to see lots of diagnostics
verbose = 1;
// open the datafile (quit if we can't)
fid = mopen(datafile, 'r');
if (fid == -1)
error('cannot open datafile');
end
// loop over all lines in the file, reading them one at a time
num_lines = 0;
while (true)
// try to read the line ...
[num_read, val(1), val(2), val(3)] = mfscanf(fid, "%f\t%f\t%f");
if (num_read <= 0)
break
end
if (verbose > 0)
fprintf(1, 'num_lines %3d num_read %4d \n', num_lines, num_read);
end
if (num_read ~= 3)
error('didn''t read three points');
end
// okay, that line contained valid data. Store in arrays
num_lines = num_lines + 1;
x_array(num_lines) = val(1);
y_array(num_lines) = val(2);
z_array(num_lines) = val(3);
end
// now, make the plot
plot3d2(x_array, y_array, z_array);
// close the datafile
mclose(fid);
endfunction