Изменить цвет текста geom_text [duplicate]

Синтаксис в Xcode 8 GM был еще более упрощен, код был изменен из ответа rob-mayoff выше. Используя это и помощник для addLine(to point: CGPoint), я использую кросс-платформу для рисования кода.

extension NSBezierPath {

    public var cgPath: CGPath {
        let path = CGMutablePath()
        var points = [CGPoint](repeating: .zero, count: 3)

        for i in 0 ..< self.elementCount {
            let type = self.element(at: i, associatedPoints: &points)
            switch type {
            case .moveToBezierPathElement:
                path.move(to: points[0])
            case .lineToBezierPathElement:
                path.addLine(to: points[0])
            case .curveToBezierPathElement:
                path.addCurve(to: points[2], control1: points[0], control2: points[1])
            case .closePathBezierPathElement:
                path.closeSubpath()
            }
        }

        return path
    }
}
5
задан Julius Vainora 29 September 2013 в 10:19
поделиться

1 ответ

Когда указано внутри aes, эстетика отображается на значение переменной в данных. Поскольку существует отображение между данными и видимой эстетикой, есть легенда, которая показывает, что отображение. За пределами вызова aes эстетика просто устанавливает на определенное значение. В примерах, которые вы показываете, размер (и цвет) устанавливаются одинаковыми для всех точек. В этом случае нет необходимости в легенде, потому что размер (или цвет) не передает никакого значения (относительно базовых данных).

Проблема, которую вы видите с легендой, связана с размер которого отображается на непрерывную переменную. Бывает, что в ваших данных есть только два значения, но в принципе непрерывная переменная может принимать любое значение. Если это действительно просто переменная выбора из двух, сделайте ее фактором (либо в исходных данных, либо в эстетическом вызове aes(size=factor(qsec)).

8
ответ дан Henrik 19 August 2018 в 15:33
поделиться
  • 1
    Понял. Мой конкретный случай, вероятно, связан с использованием двух вызовов geom_point() для двух разных наборов данных с одинаковыми полными уровнями факторов. Я хочу один набор с размером = n, а другой - размером = m. Возможно, поскольку каждый вызов geom_point() видит только один статический размер, если я вызываю вне aes(), он не добавляет легенды? (Я упоминаю об этом, поскольку я вызываю вне aes() с определенным значением ... но так как два таких вызова выполняются с разными опциями размера, там is означает размеры. – Hendy 16 July 2012 в 22:42
  • 2
    Идиоматический способ сделать то, что вы хотите, - поместить два набора данных в единый файл data.frame с новым столбцом, который идентифицирует, из какого набора он пришел. Затем размер может быть сопоставлен с этой переменной, а scale_size_manual можно использовать для установки размеров по желанию. Кроме того, вы можете назначить размер строковой константе (aes(size="set1") для одного, aes(size="set2") для другого), а затем использовать scale_size_manual для сопоставления этих разрывов с определенными метками и размерами (values). См. Например, stackoverflow.com/q/11159072/892313 – Brian Diggs 17 July 2012 в 05:14
Другие вопросы по тегам:

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