как настроить ось Y в Facet_grid в R

Итак, я считаю, что правильный ответ на этот вопрос: префикс должен быть настроен в фактическом серверном приложении, которое вы используете, когда разработка завершена. Apache, nginx и т. Д.

Однако, если вы хотите, чтобы это работало во время разработки при запуске приложения Flask при отладке, посмотрите на этот gist .

Флажок DispatcherMiddleware для спасения!

Я скопирую код здесь для потомков:

"Serve a Flask app on a sub-url during localhost development."

from flask import Flask


APPLICATION_ROOT = '/spam'


app = Flask(__name__)
app.config.from_object(__name__)  # I think this adds APPLICATION_ROOT
                                  # to the config - I'm not exactly sure how!
# alternatively:
# app.config['APPLICATION_ROOT'] = APPLICATION_ROOT


@app.route('/')
def index():
    return 'Hello, world!'


if __name__ == '__main__':
    # Relevant documents:
    # http://werkzeug.pocoo.org/docs/middlewares/
    # http://flask.pocoo.org/docs/patterns/appdispatch/
    from werkzeug.serving import run_simple
    from werkzeug.wsgi import DispatcherMiddleware
    app.config['DEBUG'] = True
    # Load a dummy app at the root URL to give 404 errors.
    # Serve app at APPLICATION_ROOT for localhost development.
    application = DispatcherMiddleware(Flask('dummy_app'), {
        app.config['APPLICATION_ROOT']: app,
    })
    run_simple('localhost', 5000, application, use_reloader=True)

Теперь при запуске вышеуказанного кода в качестве автономного приложения Flask , http://localhost:5000/spam/ отобразит Hello, world!.

В комментарии к другому ответу я сказал, что хотел сделать что-то вроде этого:

from flask import Flask, Blueprint

# Let's pretend module_blueprint defines a route, '/record//'
from some_submodule.flask import module_blueprint

app = Flask(__name__)
app.config['APPLICATION_ROOT'] = '/api'
app.register_blueprint(module_blueprint, url_prefix='/some_submodule')
app.run()

# I now would like to be able to get to my route via this url:
# http://host:8080/api/some_submodule/record/1/

Применение DispatcherMiddleware к мой надуманный пример:

from flask import Flask, Blueprint
from flask.serving import run_simple
from flask.wsgi import DispatcherMiddleware

# Let's pretend module_blueprint defines a route, '/record//'
from some_submodule.flask import module_blueprint

app = Flask(__name__)
app.config['APPLICATION_ROOT'] = '/api'
app.register_blueprint(module_blueprint, url_prefix='/some_submodule')
application = DispatcherMiddleware(Flask('dummy_app'), {
    app.config['APPLICATION_ROOT']: app
})
run_simple('localhost', 5000, application, use_reloader=True)

# Now, this url works!
# http://host:8080/api/some_submodule/record/1/

0
задан jay.sf 31 March 2019 в 07:03
поделиться

1 ответ

С данными, предоставленными ФП, график, составленный

ggplot(mydata) + 
  aes(x = year, y = value, fill = coralType) +
  geom_col() + 
  facet_grid(coralType ~ location)

enter image description here

выглядит хорошо, потому что value является числовым .

Обратите внимание, что эстетика fill используется вместо эстетики colour. Кроме того, geom_col() используется в качестве ярлыка для geom_bar(stat = "identity").


Я могу воспроизвести проблему при изображении value как символа (который превращается в фактор с помощью ggplot2):

max_value <- 60
ggplot(mydata) + 
  aes(x = year, y = sprintf("%.2f %%", 100 * value / max_value),
      fill = coralType) +
  geom_col() + 
  facet_grid(coralType ~ location)

enter image description here [ 1113]

Это не похоже на суматоху, как на скриншоте OP из-за ограниченного количества точек данных.


Если OP хочет показывать проценты по оси Y вместо абсолютных значений, scale_y_continuous(labels = scales::percent) можно использовать с числовыми значениями:

max_value <- 60
ggplot(mydata) + 
  aes(x = year, y = value / max_value, fill = coralType) +
  geom_col() + 
  facet_grid(coralType ~ location) + 
  scale_y_continuous(labels = scales::percent)

enter image description here [1118 ]

Данные

mydata <-
structure(list(location = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("site01", "site02", 
"site03", "site04", "site05", "site06", "site07", "site08"), class = "factor"), 
    coralType = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L), .Label = c("blue corals", "hard corals", 
    "sea fans", "sea pens", "soft corals"), class = "factor"), 
    longitude = c(143.515, 143.515, 143.515, 143.515, 143.515, 
    143.515, 143.515, 143.515, 143.515, 143.515, 143.515, 143.515, 
    143.515, 143.515, 143.515), latitude = c(-11.843, -11.843, 
    -11.843, -11.843, -11.843, -11.843, -11.843, -11.843, -11.843, 
    -11.843, -11.843, -11.843, -11.843, -11.843, -11.843), year = c(2010L, 
    2011L, 2012L, 2013L, 2014L, 2015L, 2016L, 2017L, 2011L, 2012L, 
    2013L, 2014L, 2015L, 2016L, 2017L), value = c(30, 30, 41, 
    43, 50, 54, 57, 58, 10, 11, 30, 31, 31, 32, 34)), row.names = c(NA, 
15L), class = "data.frame")
0
ответ дан Uwe 31 March 2019 в 07:03
поделиться
Другие вопросы по тегам:

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