2013-07-21 19 views
7

का उपयोग कर एक इंटरैक्टिव 3 डी प्लॉट में एक निश्चित शीर्षक डालें, मैं आर से आरजीएल पैकेज का उपयोग कर एक इंटरैक्टिव 3 डी प्लॉट में एक निश्चित शीर्षक जोड़ने की कोशिश कर रहा हूं, लेकिन अब तक मैं इसे करने में सक्षम नहीं हूं। मैं मुख्य शीर्षक के तहत एक मुख्य शीर्षक और उपशीर्षक भी लेना चाहता हूं।आरजीएल पैकेज, आर

यहाँ एक नमूना कोड है,

library(rgl) 

data<-read.table(text="   X   Y   Z 
       1 147.0883 -18.69122 -13.90000 
       2 147.0894 -18.69455 -10.97250 
       3 147.0883 -18.69122 -17.45000 
       4 147.0883 -18.69122 -15.44000 
       5 147.0883 -18.69122 -13.45000 
       6 147.0909 -18.69922 -12.25000 
       7 147.0883 -18.69122 -17.30000 
       8 147.0883 -18.69122 -16.40000 
       9 147.0883 -18.69122 -14.30000 
       10 147.0883 -18.69122 -18.50000 
       11 147.0883 -18.69122 -15.67606 
       12 147.0883 -18.69122 -17.25780 
       13 147.0883 -18.69122 -3.64000 
       14 147.1164 -18.68133 -22.13000 
       15 147.0883 -18.69122 -18.54778 
       16 147.0883 -18.69122 -15.50000 
       17 147.1185 -18.68691 -14.55500 
       18 147.0883 -18.69122 -18.12500 
       19 147.0901 -18.69670 -14.39767",header=T) 

data 

a<-as.matrix(data) 

# call the plug-in bandwidth estimator 
H.pi<-Hpi(a,binned=TRUE)*3 ## a is a matrix of x,y,z points 

# calculate the kernel densities 
fhat<-kde(a,H=H.pi) 

# produce a 3D plot 
open3d() 

title<-"Individual 1 (male)" # main title 
title2<-"Site A" # subtitle 

plot(fhat,cont=c(50,95),colors=c("green","red"),drawpoints=TRUE, 
    xlab="",ylab="", zlab="",size=1.5,ptcol="black", 
    axes=F,box=T,aspect=c(1,1,0.5),zlim=c(-40,0)) 

axes3d(c("x--","y--","z-+"),cex=0.8) 
mtext3d("Longitude",edge="x--",line=3,las=2,cex=1.1) 
mtext3d("Latitude",edge="y--",line=3,las=2,cex=1.1) 
mtext3d("Depth (m)",edge="z-+",line=3,las=2,cex=1.1) 

title3d(main=title,sub=title2,line=4) 

मैं एक निश्चित शीर्षक (और उपशीर्षक) इतनी है कि जब मैं एक 3 डी फिल्म के रूप में मेरी साजिश निर्यात करते हैं, मुख्य शीर्षक है होने के लिए एक अच्छा तरीका नहीं मिला है साजिश के साथ घूर्णन नहीं ...

movie3d(spin3d(axis=c(0,0,1), rpm=4),dir="~/Dropbox/R/Sample plots", duration=15, fps=10, movie="Plot 1") 

आप एक निश्चित स्थान में मुख्य शीर्षक डाल (और संभवतः के तहत एक माध्यमिक शीर्षक जोड़ने) का एक अच्छा/आसान तरीका है कि बहुत अच्छा होगा है। अग्रिम धन्यवाद,

+0

मुझे लगता है कि आप जो चाहते हैं वह 'rgl' के साथ संभव नहीं है। आप किसी अन्य सॉफ़्टवेयर का उपयोग करके फिल्म बनाने के बाद शीर्षक जोड़ने पर विचार कर सकते हैं। –

उत्तर

2

यह वर्तमान में आरजीएल में नहीं किया जा सकता है।

+0

साजिश चल रही है, जबकि पृष्ठभूमि में एक निश्चित स्थान पर कम से कम मुख्य शीर्षक रखने का कोई तरीका है? – user1626688

+2

नहीं -? Rgl.texts का कहना है कि टेक्स्ट 3 डी स्पेस में स्थित है, जो उपयोगकर्ता का सामना कर रहा है। आरजीएल ग्राफिक्स डिवाइस मानक आर प्लॉटिंग सिस्टम का उपयोग नहीं करता है, इसलिए 'टेक्स्ट' काम नहीं करेगा,' शीर्षक 'काम नहीं करेगा आदि। मुझे लगता है कि इसे ftgl का उपयोग करके 2 डी स्थिर पाठ को लागू करने के लिए सी ++ स्तर पर कुछ काम की जरूरत है पुस्तकालय जो आरजीएल अपने पाठ के लिए उपयोग करता है। – Spacedman

+5

देखें [यहां] (http://stackoverflow.com/a/33425187/3001626) –

1

पुन: पेश करने के लिए अपनी स्क्रिप्ट केडीई (एक पुस्तकालय शामिल नहीं) याद आ रही है ... किसी भी मामले क्या आप का उपयोग करें: फिल्म के बाद जोड़ने:

text3d(x=0.08, y=0.97, z=0.03, title.main ,col="Blue") 

जहां: एक्स, वाई, जेड स्थान होते हैं, अपने ग्राफिक में। मैंने scatter3d (आरजीएल का उपयोग कर भी उपयोग कर) के साथ इसका उपयोग किया है।

0

परीक्षण के बारे में सुझाव के समान, आप एक किंवदंती जोड़ सकते हैं जो स्थिर रहता है और इसे आपके शीर्षक के रूप में उपयोग करता है। से Adding a legend to an rgl 3d plot

legend3d("topright", legend = paste('Type', c('A', 'B', 'C')), pch = 16, col = rainbow(3), cex=1, inset=c(0.02)) 
12

एक RGL साजिश में एक शीर्षक लाना नीचे दिए गए उदाहरण देखें पिछले साल से एक अद्यतन डेटिंग करने के लिए धन्यवाद अब संभव है।

विचार नए फ़ंक्शन bgplot3d का उपयोग करना है जो आरजीएल विंडो की पृष्ठभूमि में आउटपुट करता है, जैसे कि यह एक सामान्य साजिश था।

उदाहरण के लिए:

# A minimal plot3d example 
library(rgl) 
a = matrix(runif(3000), ncol=3) 
plot3d(a, col = rainbow(100)[cut(a[,1], breaks = seq(0,1,le=101), include.lowest = T)]) 

bgplot3d({ 
    plot.new() 
    title(main = 'This is the main title', line = 3) 
    mtext(side = 1, 'This is a subtitle', line = 4) 
    # use here any other way you fancy to write your title 
}) 

देता है कौन सा:

                                                                                                RGL title with plot3d and bgplot3d

वहाँ एक बहुत महत्वपूर्ण चेतावनी हालांकि है, मदद में एक नोट के रूप में कहा गया है bgplot3d के लिए पेज:

क्योंकि पृष्ठभूमि भूखंडों बिटमैप के रूप में तैयार कर रहे हैं, वे आकार परिवर्तन नहीं करते हैं बहुत सुन्दरता। अपनी विंडो को पहले आकार देना सबसे अच्छा है, फिर उस आकार पर पृष्ठभूमि बनाएं।

संबंधित मुद्दे