Inkscape กับ ggplot

เสียเวลาพอสมควรที่ต้องมาคอยจัดระยะห่างในเอกสารโดยเฉพาะกราฟต่างๆที่ต้องนำมาวางให้อยู่ด้วยกันเป็น grid หรือตาราง โดยใน R นั้นคำสั่งที่ผมใช้เยอะก็พวก คำสั่ง plot_grid หรือแม้แต่ option ของ ggplot อย่าง plot.margin นั้นบางที่มันก็ทำให้กะขนาดเอายากพอสมควร นี่ยังไม่รวมเรื่อง scale หรือขนาดของ fonts อีก …. โอย…. วิธีที่พอช่วยเรื่องพวกนี้ได้บ้างก็คือ หลังจากที่ export เป็น pdf ของกราฟที่ต้องการจาก plot_grid แล้วก็อาศัย Inkscape มาช่วยในการขยับกราฟให้อยู่ในตำแหน่งที่ต้องการ วิธีการก็แสนจะง่าย เพียงแค่เปิดไฟล์ pdf ใน Inkscape จากนั้นก็ click หรือลากกราฟที่จะย้าย หรือจะเพิ่มเติมอะไรลงไปเลยยังได้ แนะนำให้ติดตั้ง Inkscape ไว้ที่เครื่องครับ อีกตัวก็เป็น sumatra pdf ครับมันจะเร็วดีครับในการเปิดเอกสาร pdf แต่จะแก้ไขเพิ่มเติมอะไรไม่ได้ครับ  

undocumented Mathematica functions

Mathematica แต่ล่ะเวอร์ชั่นจะมีคำสั่งใหม่ๆแปลกๆ และเจ๋งๆเพิ่มขึ้นมาเสมอ และบ่อยครั้งก็จะมี functions ที่ไม่เอกสารอธิบายการทำงานของ functions แปลกใหม่นั้น แต่มันก็มีกลุ่มคนที่ใช้งาน Mathematica แบบ hardcore หน่อยที่ชอบเปิดดู code ที่เขาเขียนมา ชอบหาอะไรแปลกเพื่อหาดูว่าจะปรับปรุงแก้ไขปัญหาที่เจอหรือที่กำลังทำอยู่ได้อย่างไร ถ้าสนใจอยากดูว่ามี undocumented functions อะไรที่น่าสนใจลองดูที่นี่ครับ https://mathematica.stackexchange.com/questions/805/what-are-some-useful-undocumented-mathematica-functions undocumented functions นี้พอในเวอร์ชั่นใหม่ๆอาจจะหายหรือกลับมาก็แล้วแต่ว่ามีการปรับปรุงอะไรกันไป หลายครั้งที่อ่านตามเวบอย่าง stackexchange หรือ stackoverflow ก็จะงงๆอยูตลอดเกี่ยวกับพวก undocumented functions นี้ว่าเขาหากันมาอย่างไร แต่ก็มีคนคุยเรื่องกันอยู่บ้างเช่น https://mathematica.stackexchange.com/questions/809/how-can-one-find-undocumented-options-or-option-values-in-mathematica    

เปลี่ยนรูปแบบของตัวเลขเป็นแบบ m*10^n บนแกน ใน ggplot

มีตัวอย่างที่ code ที่นำมาใช้ได้ที่ https://groups.google.com/forum/#!topic/ggplot2/a_xhMoQyxZ4 (โดย Brian Diggs) fancy_scientific <- function(l) { # turn in to character string in scientific notation l <- format(l, scientific = TRUE) l <- gsub("0e\\+00","0",l) # quote the part before the exponent to keep all the digits l <- gsub("^(.*)e", "'\\1'e", l) # turn the 'e+' into plotmath format l <-

จาก Shiny สุดท้ายกลับมา CDF

บ่น ๆๆ ตัว Shiny เวลาที่วาดกราฟด้วย ggplot2 มันค่อนข้างช้าพอสมควร ยิ่งถ้ามี function ที่ต้องคำนวณให้ได้ข้อมูลก่อนมาวาดกราฟนี่ยิ่งหนักเลย สุดท้ายก็ต้องกลับมาที่ CDF ของ Mathematica เฮ้ออออ … ตัวอย่างข้างล่างนี้ทุกครั้งที่เปลี่ยน index จะมีการคำนวณผลลัพธ์แบบ real time เลยไม่ใช่การเอาผลลัพธ์ที่ได้มาวาดเฉยๆนะครับ แล้วลองสังเกตุความเร็ว  ถ้าเทียบกับ R/Shiny นี่คนล่ะเรื่องเลย   ส่วนอันนี้อีกตัวอย่างที่เอามาไว้โชว์ดูข้อมูลเฉยๆ  ถ้าเห็น code ที่เขียนแล้วจะตกใจเพราะไม่กี่บรรทัดเอง เสียดายที่ภาษา Wolfram หรือ Mathematica นี่ไม่ค่อยเป็นกระแสสักเท่าไหร่ในบ้านเรา ถึงแม้จะสามารถใช้ได้ฟรีใน Raspberry Pi ส่วนตัวคิดว่าน่าจะเอามาใช้สอนเด็กของไทยเรามาก

สีหน้าใน R

ทดสอบ FaceExp  แพ็คเกจ สำหรับหาสีหน้าของคนในรูป  เปิดทดสอบชั่วคราว1 เม.ย ลบครับ(อาจลบก่อนหน้านั้น)  สนใจทดสอบ โหลดได้ที่ https://1drv.ms/u/s!AjSk65t7m_UYiJ1TFDzPtw6hdZJj_g วิธีการติดตั้งก็โหลด ไฟล์ zip ในLink แล้วพิมพ์ install.packages(file.choose(), repos = NULL, type="source") แล้วเลือกไฟล์ที่โหลดมาครับ คำสั่งหลักคือ faceExp(pic.url)  โดยที่ pic.url คือ url ของภาพครับ นั่นหมายความว่าถ้าอยากทดสอบแพ็คเกจนี้ต้องนำรูปโหลดไปไว้ที่ใดก่อน จากนั้นก็นำ url มาใส่ในคำสั่งนี้ได้เลยครับ โดยสีหน้าที่มีคือ happiness, disgust, sadness, neutral, anger, fear, surprise

ตัวอย่างการใช้ Shiny กับ Maemod

มีคนถามมาว่าช่วยทำตัวอย่างการใช้ Shiny กับแพ็คเกจ maemod ให้ดูหน่อย ผมทำเป็นตัวอย่างง่ายๆให้ดูแล้วครับที่ https://github.com/slphyx/maemod/tree/master/inst/examples/shiny อยากทดลองเล่นก็ลง maemod ก่อนหลังจากนั้นก็โหลดตัวอย่างไฟล์ที่ให้ไว้ใน link ทั้งสามไฟล์ โดยเก็บไว้ที่เดียวกัน จากนั้นก็เปิดไฟล์ ui.R หรือ server.R ใน rstudio แล้วก็ click ที่ปุ่ม Run App ได้เลยครับ    

shiny ui สำหรับ package แม่มด

ทดลองเขียน Shiny UI สำหรับ maemod ซึ่งเป็นแพ็คเกจภาษา R ที่ช่วยให้เขียนสมการ ODE ง่ายขึ้นซึ่งผมตั้งใจจะทำให้เหมือนโปรแกรม Berkeley Madonna ถ้าว่างๆก็จะเพิ่มความสามารถมันไปเรื่อยๆครับ ถ้าใครอยากลองเล่นก็ไปที่ https://slphyx.shinyapps.io/maemodshiny ครับ ถ้ามีคำแนะนำติชมอะไรก็เมล์มาได้ครับ

ปัญหา ‘\r\n’ สำหรับ R บนวินโดว์

พอดีว่าเขียนโปรแกรม(ภาษา R)เพื่ออ่านค่า input ที่เป็น string จากไฟล์ แต่เจอปัญหาที่ eval  ของ R ไม่สามรถ run ได้ นั่นก็คือตัว ‘\r\n\r\n’ ซึ่งมันก็คือการขึ้นบันทัดใหม่จาก text file ที่สร้างบนวินโดว์ (Windows CR LF) ทำให้ต้องกลับไปสร้างแบบ Unix (LF) แทน หรือไม่ก็ต้องลบ \r ออก มีการคุยเรื่องนี้ที่ https://stackoverflow.com/questions/1761051/difference-between-n-and-r      

เอาสักดอกไหม

จาก http://www.sakngoi.com/2015/10/30/สมการดอกกุหลาบ/ library(misc3d) rose <- function(x,theta,axis) { phi <- (pi/2)*exp(-theta/(8*pi)) X <- 1-(1/2)*((5/4)*(1- ((3.6 * theta) %% (2*pi))/pi)^2-1/4)^2 y <- 1.95653* x*x * (1.27689 *x-1)^2 * sin(phi) r <- X*(x *sin(phi)+y*cos(phi)) out<-switch(axis, x={ r*sin(theta) }, y={ r*cos(theta) }, z={ (X*(x* cos(phi)-y* sin(phi))) } ) return(out) } parametric3d( fx = function(u,v) rose(u,v,axis="x"), fy = function(u,v) rose(u,v,axis="y"), fz