2012-03-11 2 views
3

Я пытаюсь создать 3D-график разброса с использованием rgl.plot3d. Однако позиционирование меток и осей по умолчанию не является удовлетворительным. Например, метка оси y расположена на противоположной стороне, в то время как я хочу, чтобы она располагалась на ближней стороне. Ключи по оси x расположены на самом верху. Я подошел к ним, чтобы расположить их на близком дне. Я посмотрел на ?par3d, но не смог найти ничего, что могло бы помочь мне. Можно ли это сделать в rgl? Код и данные приведены ниже. Спасибо.R: Позиционирование меток и осей с помощью rgl.plot3d

Код

d <- read.table(file='myfile.dat', header=F) 
plot3d(
    d, 
    xlim=c(0,20), 
    ylim=c(0,20), 
    zlim=c(0,10000), 
    box=F, 
    type='p', 
    size=5, 
    col=d[,1] 
) 
mtext3d(text='Test', edge='y+-', line=2) 
axes3d(
    edges=c('x--', 'y+-', 'z--'), 
    labels=T 
) 
lines3d(
    d, 
    lwd=2, 
    col=d[,1] 
) 
grid3d(side=c('x', 'y+', 'z')) 

данные

11 2 2 
NA NA NA 
10 2 2 
NA NA NA 
13 2 1 
NA NA NA 
15 2 1 
NA NA NA 
5 2 11 
5 3 10 
5 4 16 
5 5 34 
5 6 102 
5 7 294 
5 8 682 
5 9 1439 
5 10 2646 
5 11 3615 
5 12 2844 
5 13 1394 
NA NA NA 
4 2 10 
4 3 4 
4 4 4 
4 5 10 
4 6 38 
4 7 132 
4 8 396 
4 9 976 
4 10 2121 
4 11 4085 
4 12 6261 
4 13 6459 
4 14 4238 
4 15 1394 
NA NA NA 
7 2 3 
NA NA NA 
6 2 2 
NA NA NA 
9 2 8 
9 3 6 
9 4 4 
9 5 5 
NA NA NA 
8 2 4 
8 3 10 
8 4 22 
8 5 52 
8 6 126 
8 7 264 
8 8 478 
8 9 729 
8 10 943 
8 11 754 
8 12 382 
NA NA NA 
+0

Когда я предложил вам опубликовать другой вопрос, я включил запрос о включении данных (и предположил, что вы также разместите код). Вы знаете, что можете «захватить» рамку построения и выполнить интерактивную 3d-ротацию сюжетная рамка, верно? Это изменит расположение меток осей по умолчанию. –

+0

Вы посмотрели '? Axes3d' (и особенно раздел« Подробности »), правильно? –

+0

@DWin Это была еще одна проблема, с которой я столкнулся. Это не было связано с этим и не требовало кода и/или данных, поэтому я не публиковал его. У меня есть еще несколько проблем с представлением view3d и т. Д., О которых я тоже расскажу. В любом случае, я довольно устал от R. Пакет rgl особенно кажется очень глючным. Я собираюсь вернуться к Гнублоту. –

ответ

3

Вы должны смотреть на ?axis3d где использование параметра 'грани' описываются. Если вы хотите, чтобы метки на оси x на передней панели и оси y на стороне ближнего и нижнего уровня, вы сначала построили график, используя ..., axes=FALSE,, и с неизменным вопросом этой проблемы на консоли:

axes3d(edges=c("x--", "y--", "z")) 

Я еще не понял, можно ли удалить существующую ось на участке rgl.

+0

возможно '? Rgl.pop' –

+0

« Возможно »- это правильное слово. Если это так, вам нужно найти идентификаторы, а затем использовать 'rgl.pop (type =" bboxdeco ", id = ..number ..)' –

+0

@DWin ok thanks. Это сработало для меня. Я также понял, что могу разместить метки на своих желаемых позициях с помощью mtext3d. Однако plot3d создает некоторые метки по умолчанию. Как удалить их? –

Смежные вопросы