It's sort of possible, but it's going to be tedious.
The "vary color by attribute" setting in Pro only really works for numeric values, and it will scale the color based on number and a color ramp. These values don't translate well to a legend, either. And as you've found, these don't carry over to AGOL.
What you're really trying to do is create unique symbols based on two fields. AGOL won't let you do this and treat things as categories; you can only use multiple fields with numeric values, not two categorical fields.
The best you can do is base the symbology on an expression:
var cd = $feature.condition
var cd_cat = When(
cd >= 0 && cd <= 0.99, 'good',
cd >= 1 && cd <= 1.99, 'fair',
cd >= 2 && cd <= 2.99, 'adequate',
cd >= 3 && cd <= 3.99, 'poor',
cd >= 4 && cd <= 4.99, 'bad',
cd == 5, 'just the worst',
'no value'
)
return `${$feature.surface} - ${cd_cat}`
But you'll run into a couple issues. First, if you have 5 surface types and 6 conditions, there are potentially 30 unique symbols you'll need to configure. Like I said, tedious.
Second, in AGOL, you only get to configure symbols for values that are present in the data. So of the 30 potential combinations, if only half are present when the symbology is configured, then you won't be able to set the symbology for the remaining combinations. If one of those appear later, it will not be symbolized correctly, and you'll need to open the layer to adjust the symbology to catch that new type.
There's a workaround for the second point, that you can set the symbology for non-present values in ArcGIS Pro and save the web map from there, but it's still going to be tedious.
On the other hand, if you don't classify that other field, AGOL can get you colors from one field and width from the numeric field, but this might not be what you want for your map.
- Josh Carlson
Kendall County GIS