Data Colors Change in Service vs Desktop (different color priorities)
This is (unfortunately) a fairly common support topic. First, please refer to:
Use report themes in Power BI Desktop - Power BI | Microsoft Learn
You can have "static" multi-series, which means they are Measures and the count is known before a query. Think Sales, Profit, Revenue, etc. These will take colors by index from your theme. Sales will be ThemeColor1 every time (if it is first in the Build Pane's field well). We do not cache Sales = some theme color, then try to keep it the same across the report.
You can also have "dynamic" series, using a Legend field (dimension) to split a single Measure across groups. Think about showing Sales across different Departments or Regions. In this case, the number of series depends on the number of unique values in that Legend field (how many Departments are there?) hence dynamic. We do cache these, and they are assigned on a first-come, first-served basis. If you see Page 1 first, you may get ThemeColor 1-5 assigned to the first 5 Departments, then on Page 2 you will see Regions and ThemeColor 6/7/8 will be assigned to the 3 regions you are seeing. This can lead to some confusion depending on what pages you visit first, or even which queries run faster on the same page, etc.
The best practice is to explicitly set colors in the format pane for your visuals. However, if filters are in play and are later removed, then some series may not be given explicit colors. Also, new groups can be added over time, like a new Sales Region is created, for instance, and it won't have an explicit color assigned until you update the report.
Is there any short-term solution to help you all with making this easier? A toggle to disable the "dynamic" series color cache might help, but then you will get the same color for the first series irregardless of the dynamic grouping, which can be misleading ("red" could mean two different things on the same page).
Maybe add support for two theme sets, one for static and one for dynamic, and cache both?
We think the best solution is to allow report authors to assign colors to both Measures (static series) and Dimension Field values (dynamic series) in the model, so that all reports created from that model will have proper default values. This is somewhat expensive for us to implement, but please let us know if this would help your issues, or if something cheaper might be helpful in the short term.