diff --git a/frontend/src/metabase/qb/lib/actions.js b/frontend/src/metabase/qb/lib/actions.js
index 4e3b90c3f94970dc6c06109c67638af64ada7cc1..3dd68dff57209d52ddbaef561b707f77ae7203a8 100644
--- a/frontend/src/metabase/qb/lib/actions.js
+++ b/frontend/src/metabase/qb/lib/actions.js
@@ -374,7 +374,7 @@ export const pivot = (
     );
   }
 
-  guessVisualization(newCard, tableMetadata);
+  guessVisualization(newCard, tableMetadata, card.display);
 
   return newCard;
 };
@@ -389,7 +389,19 @@ export const pivot = (
 // ]);
 const VISUALIZATIONS_TWO_BREAKOUTS = new Set(["bar", "line", "area"]);
 
-const guessVisualization = (card: CardObject, tableMetadata: Table) => {
+const VISUALIZATIONS_LINE_AREA_BAR = new Set(["bar", "line", "area"]);
+
+// helper to preserve existing display if it's a line/area/bar, otherwise use default
+const getLineAreaBarDisplay = (defaultDisplay, existingDisplay) =>
+  VISUALIZATIONS_LINE_AREA_BAR.has(existingDisplay)
+    ? existingDisplay
+    : defaultDisplay;
+
+const guessVisualization = (
+  card: CardObject,
+  tableMetadata: Table,
+  existingDisplay: string = null,
+) => {
   const query = Card.getQuery(card);
   if (!query) {
     return;
@@ -412,14 +424,14 @@ const guessVisualization = (card: CardObject, tableMetadata: Table) => {
       card.visualization_settings["map.type"] = "region";
       card.visualization_settings["map.region"] = "world_countries";
     } else if (isDate(breakoutFields[0])) {
-      card.display = "line";
+      card.display = getLineAreaBarDisplay("line", existingDisplay);
     } else {
-      card.display = "bar";
+      card.display = getLineAreaBarDisplay("bar", existingDisplay);
     }
   } else if (aggregations.length === 1 && breakoutFields.length === 2) {
     if (!VISUALIZATIONS_TWO_BREAKOUTS.has(card.display)) {
       if (isDate(breakoutFields[0])) {
-        card.display = "line";
+        card.display = getLineAreaBarDisplay("line", existingDisplay);
       } else if (_.all(breakoutFields, isCoordinate)) {
         card.display = "map";
         card.visualization_settings["map.type"] = "grid";