2012-03-13 28 views
8

Tôi đang cố vẽ hai tập dữ liệu bằng gnuplot. Họ là cả hai (x, y, z) ba. Chúng không được bố trí trên lưới điện. Tôi muốn vẽ một trong số chúng bằng cách sử dụng dgrid3dpm3d. Trên hết, tôi muốn che phủ các tập dữ liệu khác nhưng chỉ là các điểm rải rác.Vẽ hai tập dữ liệu trên cùng một biểu đồ với gnuplot. Một với dgrid3d, cái kia không có

Để đưa ra ví dụ cụ thể hơn: Tôi đang cố gắng vẽ hiệu ứng của một hình trụ tiếp cận bề mặt. Tôi muốn âm mưu phản ứng của bề mặt và đó là nơi dgrid3d có ích. Ngày đầu đó, tôi muốn vẽ vị trí của hình trụ và tôi có chu vi của nó như là điểm.

tôi đã sử dụng:

set dgrid3d 100,100,4 
set pm3d 
splot "dataset1" with pm3d, "dataset2" with dots 

Tập dữ liệu có khoảng 100x100 điểm, bố trí trên một gần như vuông, vì vậy 100.100 công trình tốt nhất ở đây. Không có vấn đề làm thế nào tôi âm mưu các tập dữ liệu thứ hai, nó luôn luôn kết thúc lên là một hình vuông của các kích thước tương tự như hình trụ, thay vì một vòng tròn tốt đẹp. Khi tôi tắt dgrid3d, tôi có thể tự vẽ lô dữ liệu thứ hai và kết quả là một chu vi đẹp của hình trụ.

Vì vậy, câu hỏi của tôi là: có thể vẽ đồ thị 3D bằng hai bộ dữ liệu, một sử dụng dgrid3d và một cái khác không sử dụng nó?

Trả lời

8

Có, điều này là có thể, nhưng nó hơi phức tạp hơn bạn nghĩ. Điều quan trọng là sử dụng set table

Ví dụ của bạn:

set dgrid3d 100,100,4 
set pm3d explicit 
set table "interpolated_data.dat" 
splot "dataset1" with pm3d #writes the interpolated data to "interpolated_data.dat" 
unset table 
unset dgrid3d 
splot "interpolated_data.dat" with pm3d, "dataset2" with dots 

Lý do mà nỗ lực của bạn không làm việc là bởi vì khi dgrid3d có hiệu lực, tất cả các dữ liệu đọc được nội suy để một mạng lưới và sau đó vẽ sử dụng bất kỳ kiểu nào bạn chỉ định.

Từ gnuplot's help dgrid3d Khi được bật, dữ liệu 3D được đọc từ tệp luôn được coi là tập dữ liệu phân tán.

Như một lưu ý phụ, phương pháp này cũng có thể được sử dụng để vẽ đường nét trên đỉnh của một pm3d là tốt.

+0

Điều đó hoạt động hoàn hảo! Cảm ơn nhiều! – wojrze

+0

Chắc chắn. 'set table' là một góc nhỏ được sử dụng của gnuplot mà tôi nghĩ rằng có thể là REALLY hữu ích trong dịp. Tôi chắc chắn nó không phải là cách hiệu quả nhất để làm một số điều, vì nó tạo ra một tập tin tạm thời, nhưng đối với rất nhiều thứ, đó là cách duy nhất để làm điều đó. – mgilson

+0

Với phiên bản gnuplot mới hơn, nó chỉ hoạt động nếu bạn loại bỏ 'với pm3d' khi vẽ bảng. – Kknd

Các vấn đề liên quan