diff --git a/src/main/java/de/deadlocker8/budgetmaster/charts/DefaultCharts.java b/src/main/java/de/deadlocker8/budgetmaster/charts/DefaultCharts.java
index 861d9a62230e4c62affd2ecf1ac3d4614667fdf1..d7800b2bec9a9dd3519a8a4a55403777880784fb 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/charts/DefaultCharts.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/charts/DefaultCharts.java
@@ -56,7 +56,7 @@ public class DefaultCharts
 
 	private static final Chart CHART_AVERAGE_TRANSACTION_AMOUNT_PER_CATEGORY = new Chart("charts.default.averageTransactionAmountPerCategory",
 			getChartFromFile("charts/AverageTransactionAmountPerCategoryBar.js"),
-			ChartType.DEFAULT, 3, ChartDisplayType.BAR, ChartGroupType.NONE, "averageTransactionAmountPerCategory.png");
+			ChartType.DEFAULT, 9, ChartDisplayType.BAR, ChartGroupType.NONE, "averageTransactionAmountPerCategory.png");
 
 	private static final Chart CHART_AVERAGE_MONTHLY_INCOMES_AND_EXPENDITURES_PER_YEAR_BAR = new Chart("charts.default.averageMonthlyIncomesAndExpendituresPerYearBar",
 			getChartFromFile("charts/AverageMonthlyIncomesAndExpendituresPerYearBar.js"),
diff --git a/src/main/resources/charts/AverageTransactionAmountPerCategoryBar.js b/src/main/resources/charts/AverageTransactionAmountPerCategoryBar.js
index 3b38437966dfc6e65e63c83d87ebc76e56f4b0aa..ec9504869d73627feb44cf2886110441b9942e19 100644
--- a/src/main/resources/charts/AverageTransactionAmountPerCategoryBar.js
+++ b/src/main/resources/charts/AverageTransactionAmountPerCategoryBar.js
@@ -10,7 +10,8 @@ var transactionData = [];
 
 var categoryNames = [];
 var colors = [];
-var values = [];
+var incomesPerCategory = [];
+var expendituresPerCategory = [];
 
 for(var i = 0; i < transactionData.length; i++)
 {
@@ -22,7 +23,8 @@ for(var i = 0; i < transactionData.length; i++)
     {
         categoryNames.push(categoryName);
         colors.push(transaction.category.color);
-        values.push([]);
+        incomesPerCategory.push([]);
+        expendituresPerCategory.push([]);
     }
 
     // determine index of categoryName in list because the transactions are not ordered by category and some categories
@@ -31,7 +33,16 @@ for(var i = 0; i < transactionData.length; i++)
 
     // add to income or expenditure sum
     var amount = transaction.amount;
-    values[index].push(amount);
+    if(amount > 0)
+    {
+        incomesPerCategory[index].push(amount);
+        expendituresPerCategory[index].push(0);
+    }
+    else
+    {
+        incomesPerCategory[index].push(0);
+        expendituresPerCategory[index].push(amount);
+    }
 }
 
 
@@ -42,33 +53,81 @@ for(var j = 0; j < categoryNames.length; j++)
 {
     var currentName = categoryNames[j];
 
-    var sumOfValues = 0;
-    values[j].forEach(function(value)
-    {
-        sumOfValues += value;
-    });
+    var incomeAverage = calculateAverage(incomesPerCategory[j]);
+    var expenditureAverage = calculateAverage(expendituresPerCategory[j]);
 
-    var averageValue = (sumOfValues / values[j].length) / 100;
+    addDPlotlyData(plotlyData, incomeAverage, currentName, colors[j]);
+    addDPlotlyData(plotlyData, expenditureAverage, currentName, colors[j], false);
+}
 
-    var hoverText = prepareHoverText(currentName, averageValue);
 
+// Add your Plotly layout settings here (optional)
+var plotlyLayout = {
+    title: {
+        text: localizedTitle
+    },
+    xaxis: {
+    },
+    yaxis: {
+        title: localizedData['label1'] + ' ' + localizedCurrency,
+        rangemode: 'tozero',
+        tickformat: '.2f',
+        showline: true
+    },
+    barmode: 'relative',
+    hovermode: 'closest' // show hover popup only for hovered item
+};
+
+// Add your Plotly configuration settings here (optional)
+var plotlyConfig = {
+    showSendToCloud: false,
+    displaylogo: false,
+    showLink: false,
+    responsive: true,
+    displayModeBar: true,
+    toImageButtonOptions: {
+        format: 'png',
+        filename: 'BudgetMaster_chart_export',
+        height: 1080,
+        width: 1920,
+    }
+};
+
+// Don't touch this line
+Plotly.newPlot("containerID", plotlyData, plotlyLayout, plotlyConfig);
+
+
+function calculateAverage(values)
+{
+    var sum = 0;
+    values.forEach(function(value)
+    {
+        sum += value;
+    });
+    return (sum / values.length) / 100;
+}
+
+function addDPlotlyData(plotlyData, averageValue, categoryName, color, showLegend)
+{
     // add border if category color is white
     var borderWidth = 0;
-    if(colors[j] === '#FFFFFF')
+    if(color.toUpperCase().startsWith('#FFFFFF'))
     {
         borderWidth = 1;
     }
 
     plotlyData.push({
         y: [averageValue],
-        x: [currentName],
+        x: [categoryName],
         orientation: 'v',
         type: 'bar',
         hoverinfo: 'text',
-        hovertext: [hoverText],
-        name: currentName,
+        hovertext: [prepareHoverText(categoryName, averageValue)],
+        name: categoryName,
+        legendgroup: categoryName,
+        showlegend: showLegend,
         marker: {
-            color: colors[j],  // use the category's color
+            color: color,  // use the category's color
             line: {
                 color: '#212121',
                 width: borderWidth
@@ -77,6 +136,11 @@ for(var j = 0; j < categoryNames.length; j++)
     });
 }
 
+function prepareHoverText(categoryName, value)
+{
+    return categoryName + ' ' + value.toFixed(1) + ' ' + localizedCurrency;
+}
+
 
 // Add your Plotly layout settings here (optional)
 var plotlyLayout = {