The problem is the type “Any” of your categorial columns :Company and :Gear.
Please try
gearavg[!,:Company] = convert(Array{String,1},gearavg[!,:Company])
gearavg[!,:Gear] = convert(Array{String,1},gearavg[!,:Gear])
gearavg |> @vlplot(:bar, x = :Gear, y = :OverallMean, color = :Gear, encoding = {facet = {field = :Company, columns = 2}}, height = 500, width = 500)
The |> display
at the end is not needed.
For future questions you should provide Copy&Paste code. This makes it much easier to help. Your DataFrame isn’t copy&paste code, so it needs some coding to reproduce your issue. See:
using DataFrames, VegaLite
companies=["Davey","Mario's","Arbor Works","MLU Willhelm","Asplundh","Wright Tree Service","Mowbray’s Tree Service"]
gears=["Hitch-Climber Pulley","Other","Split Tail","Taut Line","SRT"]
drop=trues(35)
drop[ [4,6,15,23,30] ] .= false
gearavg= DataFrame( Company= convert(Array{Any,1},[ x[2] for x in vec(collect(Iterators.product(gears,companies))) ][drop]) )
gearavg[!,:Gear]= convert(Array{Any,1},[ x[1] for x in vec(collect(Iterators.product(gears,companies))) ][drop])
gearavg[!,:OverallMean]= convert(Array{Any,1},(100 .* rand(Float64,size(gearavg)[1])))
gearavg |> @vlplot(:bar, x = :Gear, y = :OverallMean, color = :Gear, encoding = {facet = {field = :Company, columns = 2}}, height = 50, width = 50)
gearavg[!,:Company] = convert(Array{String,1},gearavg[!,:Company])
gearavg[!,:Gear] = convert(Array{String,1},gearavg[!,:Gear])
gearavg |> @vlplot(:bar, x = :Gear, y = :OverallMean, color = :Gear, encoding = {facet = {field = :Company, columns = 2}}, height = 50, width = 50)
This is just hacked together to make your issue appear in my REPL.
Therefore consider