diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/charts/DefaultCharts.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/charts/DefaultCharts.java
index b67257ca1ad15cacaaac229cd0b1c95c9499af77..fe9c88e2f7d15ede562fd7c9ba1ccfd6b3eedb03 100644
--- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/charts/DefaultCharts.java
+++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/charts/DefaultCharts.java
@@ -40,7 +40,7 @@ public class DefaultCharts
 
 	private static final Chart CHART_INCOMES_AND_EXPENDITURES_PER_MONTH_BY_CATEGORIES = new Chart("charts.default.incomesAndExpendituresPerMonthByCategories",
 			getChartFromFile("charts/IncomesAndExpendituresPerMonthByCategories.js"),
-			ChartType.DEFAULT, 25, ChartDisplayType.BAR, ChartGroupType.MONTH, "incomesAndExpendituresPerMonthByCategories.png");
+			ChartType.DEFAULT, 27, ChartDisplayType.BAR, ChartGroupType.MONTH, "incomesAndExpendituresPerMonthByCategories.png");
 
 	private static final Chart CHART_REST_PER_MONTH = new Chart("charts.default.restPerMonth",
 			getChartFromFile("charts/RestPerMonth.js"),
@@ -52,7 +52,7 @@ public class DefaultCharts
 
 	private static final Chart CHART_INCOMES_AND_EXPENDITURES_PER_YEAR_BY_CATEGORIES = new Chart("charts.default.incomesAndExpendituresPerYearByCategories",
 			getChartFromFile("charts/IncomesAndExpendituresPerYearByCategories.js"),
-			ChartType.DEFAULT, 5, ChartDisplayType.BAR, ChartGroupType.YEAR, "incomesAndExpendituresPerYearByCategories.png");
+			ChartType.DEFAULT, 7, ChartDisplayType.BAR, ChartGroupType.YEAR, "incomesAndExpendituresPerYearByCategories.png");
 
 	private static final Chart CHART_AVERAGE_TRANSACTION_AMOUNT_PER_CATEGORY = new Chart("charts.default.averageTransactionAmountPerCategory",
 			getChartFromFile("charts/AverageTransactionAmountPerCategoryBar.js"),
diff --git a/BudgetMasterServer/src/main/resources/charts/IncomesAndExpendituresPerMonthByCategories.js b/BudgetMasterServer/src/main/resources/charts/IncomesAndExpendituresPerMonthByCategories.js
index 5d6acc00fdfa706df88e966ca11cec9e1f360b6f..c0c464d7a9accf4d7e9e496fcbb90dc325e27b79 100644
--- a/BudgetMasterServer/src/main/resources/charts/IncomesAndExpendituresPerMonthByCategories.js
+++ b/BudgetMasterServer/src/main/resources/charts/IncomesAndExpendituresPerMonthByCategories.js
@@ -17,19 +17,20 @@ const COLOR = 1;
 const INCOME = 2;
 const EXPENDITURE = 3;
 
-var categoryNames = [];
-var categoryColors = [];
+
+var categories = new Map();
 
 for(var i = 0; i < transactionData.length; i++)
 {
     var currentTransaction = transactionData[i];
-    if(!categoryNames.includes(currentTransaction.category.name))
+    if(!categories.has(currentTransaction.category.name))
     {
-        categoryNames.push(currentTransaction.category.name);
-        categoryColors.push(currentTransaction.category.color);
+        categories.set(currentTransaction.category.name, currentTransaction.category.color);
     }
 }
 
+var sortedCategories = new Map([...categories.entries()].sort());
+
 var dates = [];
 var values = [];
 
@@ -42,10 +43,10 @@ for(var i = 0; i < transactionData.length; i++)
     {
         dates.push(date);
         values.push([
-            categoryNames, // NAME
-            categoryColors, // COLOR
-            new Array(categoryNames.length).fill(0), // INCOME
-            new Array(categoryNames.length).fill(0)  // EXPENDITURE
+            Array.from(sortedCategories.keys()), // NAME
+            Array.from(sortedCategories.values()), // COLOR
+            new Array(sortedCategories.size).fill(0), // INCOME
+            new Array(sortedCategories.size).fill(0)  // EXPENDITURE
         ]);
     }
 
@@ -201,7 +202,8 @@ Plotly.newPlot("containerID", plotlyData, plotlyLayout, plotlyConfig);
 REGEX_CATGEORY_NAME = new RegExp("(.*)\\s\\d+.\\d%");
 
 var plotContainer = document.getElementById('containerID');
-plotContainer.on('plotly_click', function(data){
+plotContainer.on('plotly_click', function(data)
+{
     if(data.event.shiftKey !== true)
     {
         return;
diff --git a/BudgetMasterServer/src/main/resources/charts/IncomesAndExpendituresPerYearByCategories.js b/BudgetMasterServer/src/main/resources/charts/IncomesAndExpendituresPerYearByCategories.js
index ff3413d9af530b322d050d2a186af9db432ed4b9..1b5b5a25386bcc6365b3691dc439eed40b83ca93 100644
--- a/BudgetMasterServer/src/main/resources/charts/IncomesAndExpendituresPerYearByCategories.js
+++ b/BudgetMasterServer/src/main/resources/charts/IncomesAndExpendituresPerYearByCategories.js
@@ -17,19 +17,19 @@ const COLOR = 1;
 const INCOME = 2;
 const EXPENDITURE = 3;
 
-var categoryNames = [];
-var categoryColors = [];
+var categories = new Map();
 
 for(var i = 0; i < transactionData.length; i++)
 {
     var currentTransaction = transactionData[i];
-    if(!categoryNames.includes(currentTransaction.category.name))
+    if(!categories.has(currentTransaction.category.name))
     {
-        categoryNames.push(currentTransaction.category.name);
-        categoryColors.push(currentTransaction.category.color);
+        categories.set(currentTransaction.category.name, currentTransaction.category.color);
     }
 }
 
+var sortedCategories = new Map([...categories.entries()].sort());
+
 var dates = [];
 var values = [];
 
@@ -42,10 +42,10 @@ for(var i = 0; i < transactionData.length; i++)
     {
         dates.push(date);
         values.push([
-            categoryNames, // NAME
-            categoryColors, // COLOR
-            new Array(categoryNames.length).fill(0), // INCOME
-            new Array(categoryNames.length).fill(0)  // EXPENDITURE
+            Array.from(sortedCategories.keys()), // NAME
+            Array.from(sortedCategories.values()), // COLOR
+            new Array(sortedCategories.size).fill(0), // INCOME
+            new Array(sortedCategories.size).fill(0)  // EXPENDITURE
         ]);
     }