Имя столбца с пробелом в Plots.jl - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь построить определенный столбец фрейма данных с именем, содержащим пробел в Julia Plots.jl (бэкэнд GR).

Вот моя структура фрейма данных:

17-element Array{Symbol,1}:
 Symbol("DATE/TIME")      
 [...]                
 :TEMPERATURE             
 Symbol("EXT TEMPERATURE")
 :PIM                     
 [...]

Вот мой код:

using CSV, DataFrames
me=CSV.File(joinpath(dir,"myfile.csv"),delim=';')
medf=me|>DataFrame
using Plots,StatPlots,GR
@df medf GR.plot(Symbol("EXT TEMPERATURE"),title="Temperature")

Это не с:

MethodError: no method matching plot(::Symbol)
Closest candidates are:
  plot(!Matched::Union{AbstractString, Function, AbstractArray{T,2} where T, AbstractArray{T,1} where T}...; kv...) at C:\Users\condo\.julia\packages\GR\joQgG\src\jlgr.jl:1118

Я могу:

@df medf GR.plot(:TEMPERATURE)

Но я не могу:

@df medf GR.plot(:EXT TEMPERATURE)

Как мне ссылаться на этот столбец в данной конкретной ситуации?

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Макрос @df в StatPlots, кажется, имеет несколько ограничений.К счастью, пакет StatPlots предоставляет cols() в качестве обходного пути для вашей ситуации.

Попробуйте:

using CSV, DataFrames
me=CSV.File(joinpath(dir,"myfile.csv"),delim=';')
medf=me|>DataFrame
using StatPlots
gr()  # N.B.: You can include things like size=(400,300), or dpi=400 here as params
@df medf plot(cols(Symbol("EXT TEMPERATURE")),title="Temperature")
0 голосов
/ 12 октября 2018

Юлия имеет тенденцию обрабатывать константу Symbol: symb, как если бы она была именем переменной в некоторых контекстах, и поэтому становится неудобно, если вы пытаетесь использовать символы, содержащие пробелы, как если бы они были именами переменных, поскольку имена переменных в Juliaне может содержать пробелов.

Однако вы также можете ссылаться на столбец DataFrame по его позиции:

using CSV, DataFrames, Plots
iob = IOBuffer("""DATE/TIME,EXT TEMPERATURE\n2018-10-10 12:30, 22.4\n2018-10-11 08:10,26.1\n""")
df = convert(DataFrame, CSV.read(iob))
plot(df[2], ylabel=names(df)[2]) 
...