How about not using characteristics and only using custom fields ?
With the custom fields, you have an option "Display limited to" in each one of them, which allows you do hide/display them based on the value of another one of them.
That would allow you to do that without programming.
If you want to do it with characteristics, it would require at least adding custom javascript to the characteristic display (why have some documentation in our developer documentation regarding the characteristic display override).