Оси помечены не по центру, если разбиты на несколько линий

Я использую graph twoway scatter и добавив свой собственный ylabels,

Я часто имею длинные ярлыки и разбиваю их на несколько строк. Однако я сталкиваюсь с проблемой, когда хочу разбить некоторые надписи на две строки, но не на другие.

Когда я делаю это, однострочные метки смещены относительно их tick отмечает, как будто Stata ожидал, что они также будут иметь две строки.

Смотрите ниже для простой иллюстрации:

sysuse auto, clear

/* This graph has one long label and one short but both are off-center 
relative to their tick marks */

twoway scatter length weight, ytitle("") ylabel(220 ///
`" "This one is a very long" "label, broken up" "' 140 "This one is not", ///
ang(horizontal))

/* The order of labels on the graph *does not* appear to matter */

twoway scatter length weight, ytitle("") ylabel(180 ///
`" "This one is a very long" "label, broken up" "' 220 "This one is not", ///
ang(horizontal))

/* But the order in the command *does* appear to matter */

twoway scatter length weight, ytitle("") ylabel(220 ///
"This one is not" 140 `" "This one is a very long" "label, broken up" "', ///
ang(horizontal))

Это не огромная проблема, но я замечал ее годами, и было бы неплохо знать, почему мои графики ведут себя так.

1 ответ

Решение

Непонятно, что именно является причиной этого, но можно сделать обоснованное предположение.

Похоже, что если вы измените свой код, чтобы включить все strings в double quotesпроблема уходит. Используя ваш игрушечный пример:

sysuse auto, clear

twoway scatter length weight, name(gr1) ytitle("") ylabel(220 ///
`" "This one is a very long" "label, broken up" "' 140 `" "This one is not" "', ///
ang(horizontal))

twoway scatter length weight, name(gr2) ytitle("") ylabel(180 ///
`" "This one is a very long" "label, broken up" "' 220 `" "This one is not" "', ///
ang(horizontal))

twoway scatter length weight, name(gr3) ytitle("") ylabel(220 ///
`" "This one is not" "' 140 `" "This one is a very long" "label, broken up" "', ///
ang(horizontal))

Это, вероятно, связано с внутренним анализом кода и предполагает, что Stata ожидает второго string иметь такое же количество кавычек, как и первое.

Только StataCorp может окончательно ответить на ваш вопрос, но, надеюсь, приведенный выше пример даст вам подсказку о том, что происходит.

Другие вопросы по тегам