Home >Backend Development >Python Tutorial >How to Add Data Values to Horizontal Bars in a Matplotlib Bar Plot?
Adding Values to Horizontal Bars in Matplotlib
Bar plots are a valuable tool for visualizing data and identifying patterns. To enhance plot clarity, it is often helpful to display the exact values of each bar directly on the graph. This can provide a convenient reference for interpretation and analysis.
In matplotlib, creating a horizontal bar plot is straightforward. The following code snippet generates a bar plot that represents the frequency of different categories:
import matplotlib.pyplot as plt import numpy as np # Data for the plot x = [u'INFO', u'CUISINE', u'TYPE_OF_PLACE', u'DRINK', u'PLACE', u'MEAL_TIME', u'DISH', u'NEIGHBOURHOOD'] y = [160, 167, 137, 18, 120, 36, 155, 130] # Create the bar plot fig, ax = plt.subplots() width = 0.75 # Bar width ind = np.arange(len(y)) # X locations for groups ax.barh(ind, y, width, color="blue") ax.set_yticks(ind + width / 2) ax.set_yticklabels(x, minor=False) plt.title('Bar Plot') plt.xlabel('Frequency') plt.ylabel('Category')
However, the plot lacks the values on the bars. To add the values, you can extend the code with the following lines:
# Add bar values for i, v in enumerate(y): ax.text(v + 3, i, str(v), color='blue', fontweight='bold', verticalalignment='center')
This code iterates over the y-values and adds the string representation of each value to the plot. The ax.text method positions the text at a specified x-location (v 3) and y-location (i) in the coordinate system of the plot.
The resulting plot will have the values displayed on each bar, allowing for quick and easy interpretation of the data:
[Image of bar plot with values]
This enhancement greatly improves the usability of the plot and allows viewers to quickly grasp the specific values represented by each bar.
The above is the detailed content of How to Add Data Values to Horizontal Bars in a Matplotlib Bar Plot?. For more information, please follow other related articles on the PHP Chinese website!