Оси помечены не по центру, если разбиты на несколько линий
Я использую 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 может окончательно ответить на ваш вопрос, но, надеюсь, приведенный выше пример даст вам подсказку о том, что происходит.