Угол соответствия текста для выравнивания с углом линии регрессии на графике R [дубликат]

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class FileWriterExample {
    public static void main(String [] args) {
        FileWriter fw= null;
        File file =null;
        try {
            file=new File("WriteFile.txt");
            if(!file.exists()) {
                file.createNewFile();
            }
            fw = new FileWriter(file);
            fw.write("This is an string written to a file");
            fw.flush();
            fw.close();
            System.out.println("File written Succesfully");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
9
задан Max C 1 August 2012 в 21:58
поделиться

3 ответа

Один из способов - установить соотношение сторон графика, используя аргумент asp, а затем рассчитать углы, используя указанные asp:

asp <- 2

plot(1:10,1:10, asp=asp) 
abline(a=8, b=-1)
text(x=4, y=5, "reference line label", srt=180/pi*atan(-1*asp))

abline(a=4, b=-2)
text(x=1, y=3, "reference line label", srt=180/pi*atan(-2*asp))

enter image description here [/g0]

Установка другого asp:

asp <- 0.8

plot(1:10,1:10, asp=asp) 
abline(a=8, b=-1)
text(x=4, y=5, "reference line label", srt=180/pi*atan(-1*asp))

abline(a=4, b=-2)
text(x=1, y=3, "reference line label", srt=180/pi*atan(-2*asp))

enter image description here [/g1]

13
ответ дан Andrie 22 August 2018 в 03:48
поделиться

Добавление к ответу @ Andrie: даже если вы не устанавливаете вручную par("asp"), вы можете восстановить текущий рабочий формат со следующей функцией:

getCurrentAspect <- function() {
   uy <- diff(grconvertY(1:2,"user","inches"))
   ux <- diff(grconvertX(1:2,"user","inches"))
   uy/ux
}

. Таким образом, вы можете создать свой plot: set asp <- getCurrentAspect(); и приступаем к остальному решению @ Andrie.

Для всех, кого я знаю, эта функция существует где-то в экосистеме R, но я ее не видел ...

8
ответ дан Ben Bolker 22 August 2018 в 03:48
поделиться
  • 1
    Ах, спасибо. Я faffed вокруг в течение пяти минут с par("usr"), но не мог найти ничего полезного. – Andrie 1 August 2012 в 22:33
  • 2
    Огромное спасибо!!! Я надеялся, что есть способ избежать вычисления угла, но это тоже работает. благодаря – Max C 1 August 2012 в 22:37

Аналогичное решение с ggplot2

data <- data.frame(x = 1:10, y = 1:10)
intercept <- 10
slope <- -1
ggplot(data, aes(x,y)) + geom_point(shape=1) +  
  geom_abline(intercept = intercept, slope = slope) + 
  geom_text(x=4, y=5, label="my label", angle=atan(slope)*180/pi)

with slope 1 [/g0]

intercept <- 10
slope <- -2
ggplot(data, aes(x,y)) + geom_point(shape=1) +  
  geom_abline(intercept = intercept, slope = slope) + 
  geom_text(x=4, y=5, label="my label", angle=atan(slope)*180/pi)

with slope 2 [/g1]

3
ответ дан Maiasaura 22 August 2018 в 03:48
поделиться
  • 1
    Я попробовал подобное решение, но не смог заставить его работать. FYI, ваш код не работает на моей машине - метка не имеет такого же уклона, как и строка. – Andrie 1 August 2012 в 22:26
  • 2
    Андри, разве этот ответ не пропустит вашу точку зрения относительно соотношения сторон? – Ben Bolker 1 August 2012 в 22:27
  • 3
    Я не регулировать фактическое положение метки на обоих участках, но угол делает соответствовать опорной линии правильно. – Maiasaura 1 August 2012 в 22:32
  • 4
    PS: @Andrie Не знаете, почему этот код не работает на вашем компьютере. Моя информация о сеансе , если она помогает. У меня есть функция в моем .rprofile, которая удаляет тему по умолчанию ggplot2, но здесь ничего другого здесь не так. – Maiasaura 1 August 2012 в 22:35
  • 5
    @Maiasaura Кажется, что ваше устройство по умолчанию является квадратным. Шахта прямоугольная. Если вы измените форму своего сюжетного устройства, работает ли сюжет? – Andrie 1 August 2012 в 22:38
Другие вопросы по тегам:

Похожие вопросы: