วิธีการแสดงภาพฟังก์ชั่นความหนาแน่น 3 มิติ


19

อะไรคือวิธีที่ดีที่สุดในการแสดงภาพกราฟิกด้วยฟังก์ชั่นความหนาแน่น 3 มิติ ในขณะที่ฉันต้องการเห็นภาพ

Z=X,Y(x,Y)
?

ไม่จำเป็น แต่Rรหัสสำหรับสิ่งนี้จะดีมาก


3
ฉันเปลี่ยนเป็นสถิติเพิ่มเติม

1
หากมีบางสิ่งที่ขาดเกี่ยวกับตัวเลือกเหล่านั้นมันจะมีประโยชน์มากที่สุดถ้าคุณสามารถระบุได้ว่าอะไรคือสิ่งที่คุณต้องการและอะไรคือสิ่งที่คุณต้องการ
gung - Reinstate Monica

1
สิ่งเหล่านี้เพียงพอแล้ว แต่ตัวเลือกอื่น ๆ ของฉัน /

3
@ นิโกรฉันไม่คิดว่ามันจะเป็นแบบปิดหัวข้อ / เหมาะกว่าสำหรับ SO ก่อนที่จะมีการเปลี่ยนแปลง มีการระบุคำขอสำหรับรหัสเป็นตัวเลือก & data-visualizationเป็นส่วนหนึ่งของหน้าที่ของเรา
gung - Reinstate Monica

1
@whuber คำถามเดิมเป็นเพียง "เห็นภาพชุดข้อมูล 3 มิติ" (คุณสามารถดูได้ในประวัติการแก้ไข) ฉันคิดว่าเป็นหัวข้อแม้ว่าประเด็นของคุณจะถูกต้องชัดเจน
gung - Reinstate Monica

คำตอบ:


25

มีวิธีการที่เป็นไปได้สี่ประการที่อยู่ในใจ (แม้ว่าฉันแน่ใจว่ามีอีกมากมาย) แต่โดยทั่วไปคุณสามารถทำพล็อตข้อมูลเป็นพล็อตมุมมองพล็อตรูปร่างแผนที่ความร้อนหรือหากคุณต้องการกระจายแบบ 3 มิติ พล็อต (ซึ่งเป็นพล็อตเปอร์สเปคทีฟมากกว่าหรือน้อยกว่าเมื่อคุณมีค่าของสำหรับคู่( x , y )ทั้งหมดนี่คือตัวอย่างบางส่วนของแต่ละ (จากชุดข้อมูลสามมิติที่รู้จักกันดี):Z(x,Y)R

ป้อนคำอธิบายรูปภาพที่นี่ ป้อนคำอธิบายรูปภาพที่นี่ ป้อนคำอธิบายรูปภาพที่นี่ ป้อนคำอธิบายรูปภาพที่นี่

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

Here is the `R` code used to generate these four mentioned plots.
library(fields)
library(scatterplot3d)

#Data for illistarition
x = seq(-10, 10, length= 100)
y = x
f = function(x, y) { r = sqrt(x^2+y^2); 10 * sin(r)/r }
z = outer(x, y, f)
z[is.na(z)] = 1

#Method 1
#Perspective Plot
persp(x,y,z,col="lightblue",main="Perspective Plot")

#Method 2
#Contour Plot
contour(x,y,z,main="Contour Plot")
filled.contour(x,y,z,color=terrain.colors,main="Contour Plot",)

#Method 3
#Heatmap
image(x,y,z,main="Heat Map")
image.plot(x,y,z,main="Heat Map")

#Method 4
#3-D Scatter Plot
X = expand.grid(x,y)
x = X[,1]
y = X[,2]
z = c(z)
scatterplot3d(x,y,z,color="lightblue",pch=21,main="3-D Scatter Plot")

แผ่นความร้อนนั้นจะทำให้ไม่เห็น
gung - Reinstate Monica

@Gung คุณรู้หรือไม่ว่ามีหรือไม่ที่จะเพิ่มแถบด้านข้างเพื่อบอกว่าค่าของสีของแผนที่ความร้อนสอดคล้องกับอะไร? แน่นอนว่าใช้คำสั่งรูปภาพ

3
ฉันคิดว่าคุณต้องการให้image.plot()คำสั่งเพิ่มแถบสี นอกจากนี้ให้filled.contour()สร้างพล็อตที่คล้ายกันโดยเพิ่มแถบสีเป็นค่าเริ่มต้น
มาโคร


2
ขณะที่เราอยู่ที่นี่ฉันจะชี้ให้เห็นว่าคุณสามารถปรับแต่งจานสีในแบบที่คุณต้องการ ... วิธีที่ง่ายที่สุด (แต่อาจไม่ใช่วิธีที่ดีที่สุด) คือการใช้colorRampPalette()เช่นถ้าคุณพิมพ์a = colorRampPalette(c('dark blue','blue','light blue','yellow','orange', 'red','dark red'))มันจะสร้างฟังก์ชั่นaที่สร้างการประมาณแบบไม่ต่อเนื่องของความต่อเนื่องของสีที่ส่งผ่านสีเหล่านั้น อาร์กิวเมนต์aเป็นจำนวนเต็มที่กำหนดความละเอียดของการประมาณแบบไม่ต่อเนื่องนี้
มาโคร
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.