For the reasons above - the colours are assigned according to the order the dimension items appear in the chart with no selectoins
If you are confident that the number of items in the dimension will not change, then sorting by the dimension would resolve this.
Alternately, you can load the dimensions in first, in the order that you would like. Either load them in as a stand alone table (if you are feeling lazy) at the start of the script, or you can join your main table or lookup table to the pre-sorted order.
There is also a tonne of articles on managing colours in QlikView, if you are feeling adventurous you can even assign a colour to each item in the dimension.
The least complicated way to do this is to add columns in the lookup for Red, Green and blue
Item_Key, Item_Red, Item_Green, Item_Blue
Then in the colour expression in your chart set the colour as =RGB(Item_Red, Item_Green, Item_Blue)