Defining the Color of Lines for Plotting


ผู้ใช้ MATLAB จะมีความรู้สึกร่วมกันอยู่อย่างหนึ่งคือ คู่มือไม่ดี วันนี้เพื่อนมาถามปัญหาที่ค้างคาใจ
อยู่นาน ซึ่งปัญาคือ

ต้องการพล็อตกราฟ โดยพล็อตกราฟทีละสิบข้อมูล โดยในแต่ละข้อมูลจะต้องมีสีต่างกัน

ไม่เคยทำนะครับ อย่างเก่งผมก็แค่พล็อตทีละสองหรือสามข้อมูลแล้วให้ MATLAB กำหนดสีให้เอง
ซึ่งจะใช้วิธีถึก ๆ ดังนี้

plot(x,y1,x,y2)

MATLAB ก็จะเลือกสีให้ ถ้าข้อมูลเพิ่มเป็นซักสามสิบหล่ะ คือมี y1 ถึง y10 ไอ้การทำแบบข้างบนนั้น
มันไม่ได้ซะแล้ว ที่สำคัญสีที่ให้โดยอัตโนมัตินั้นมีแค่ 8 สีเอง ซึ่งหนึ่งในนั้นเป็นสีขาว

เรามาเริ่มต้นทำความเข้าใจว่าเราจะพล็อตข้อมูล y1 ถึง y10 ในคราวเดียวได้อย่างไรก่อน วิธีการก็
ทำการสร้างเมตริกซ์ของข้อมูลที่จะพล็อต ตัวอย่างเช่น

x = 0:pi/20:4*pi;
A = ones(length(x),10);   % กำหนดขนาดของเมตริกซ์เพื่อเพิ่มความเร็วในการคำนวณ
for i = 1:10
A(:,i) = sin(x-i/5)’;      % เก็บข้อมูลเป็นเวกเตอร์ในคอลัมน์ของเมตริกซ์ A
end

plot(x,A);

ผลที่ได้จะเห็นได้อย่างชัดเจนว่าเริ่มมีสีซ้ำกัน ทางแก้ก็คือกำหนดสีให้ MATLAB ใหม่ดังนี้

C = zeros(10,3);

for i = 1:10
C(i,1) = 0.1*i;
end
set(gcf,’DefaultAxesColorOrder’,C);

แล้วก็ตามด้วยคำสั่งในการพล็อตกราฟข้างต้น

ผลลัพธ์ที่ได้จะเป็นดังข้างบน

และแน่นอนเราหาทางกลับไม่เจอหรอก ต้องพลิกคู่มืออีกหลายตลบแล้วก็ลองผิดลองถูก จริง ๆ ก็แค่

reset(gcf); หรือ set(gcf,’default’);

ทุกอย่างก็จะกลับไปเหมือนเดิม

หมายเหตุ: ทุกอย่างเอามาจากคู่มือของ MATLAB ทั้งหมด

Advertisements

9 comments on “Defining the Color of Lines for Plotting

  1. สวัสดีค่ะ คือหนูมีปัญหาเรื่อง matlab จะปรึกษาค่ะ เีกี่ยวกับเรื่องเขียนโปรแกรมแล้วจะเก็บข้อมูลให้้เป็นรูปอะเรย์ เช่น หนูต้องการประกาศให้ตัวแปร output เป็นตัวแปรอะเรย์ที่เอาไว้เก็บข้อความที่้เป็นอะเรย์ จะประกาศ output อย่างไรดีคะ

    ไม่ทราบว่าพี่จะเข้าใจคำถามหนูหรือไม่ ถ้าไม่รบกวนพี่ช่วยตอบ E-mail มาหน่อยนะคะ

  2. พี่คับ พอดีผมมีปัญหาเกี่ยวกับ การทำ

    matlab image processing ครับ

    อยากจะทราบเกี่ยวกับการเล่น ไฟล์ video ใน matlab

    และการ เลือกเฟรมของไฟล์ video ที่ผมทำการเลือกเอาไว้ ด้วย

    คับ ยังไงก็ช่วยตอบผมโดนการ add msn มาทางเมลล์ก็ได้นะ

    คับ ผมออนอยู่ทุกวัน

  3. ถ้าผมอยากplot กราฟ sine โดยไล่โทนสีจากสีอ่อนไปสีเข้ม ไม่ทราบว่าmatlab จะทำได้ไหมครับ

  4. นักศึกษาลาดกระบัง: ไม่เข้าใจคำถามครับ หมายถึงในกราฟ sine 2 D มีการไล่สีหรืออย่างไร

  5. ท่านครับ ขอถามหน่อยนะท่าน
    ผมใช้ Matlab ในการ สร้าง สมการที่ติด ตัวแปรไว้ได้ไหมครับ
    เช่น ผมใช้ s=u*t+(a*t^2/2)
    ผมรู้ค่า u , a
    แต่ผมไม่รู้ค่า t และ ค่า s คือ ตัวแปรที่อยากเก็บ สมการนี้ไว้
    แล้วเอาไปแทน ค่าในอีก สาการหนึ่ง ที่ มีค่า t เหมือนกัน

    ใน Matlab ผมจะสามารถทำได้หรือไม่ และทำโดยวิธีไหนครับ
    ผมลอง ทำดูแล้วมันบอกว่า
    ??? Undefined function or variable ‘t’.

    กรุณาตอบด้วยนะครับ จะทางนี้หรือทาง เมลล์ ก็ได้ครับ

    หรือถ้าสะดวก add msn ก็ครับนะครับท่าน

    ขอบคุณครับ

    • ใช้ symbolic toolbox ช่วยครับท่าน เช่น

      syms t s;

      u = 1; a = 2;
      s = u*t+(a*t^2/2)

      อยากพล็อตกราฟดูเล่น ก็ ezplot(s)

      หวังว่าคงช่วยอะไรท่านได้บ้าง

  6. ขอบคุณท่านมากๆ ครับ

    เด๋วผมไปลองดู นะท่าน

    ได้ผลยังไง เด๋วมาโพสบอกครับผม

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s