- matplotlib Plotting Cookbook
- Alexandre Devert
- 336字
- 2021-07-16 12:16:25
Plotting multiple bar charts
When comparing several quantities and when changing one variable, we might want a bar chart where we have bars of one color for one quantity value.
How to do it...
We can plot multiple bar charts by playing with the thickness and the positions of the bars as follows:
import numpy as np import matplotlib.pyplot as plt data = [[5., 25., 50., 20.], [4., 23., 51., 17.], [6., 22., 52., 19.]] X = np.arange(4) plt.bar(X + 0.00, data[0], color = 'b', width = 0.25) plt.bar(X + 0.25, data[1], color = 'g', width = 0.25) plt.bar(X + 0.50, data[2], color = 'r', width = 0.25) plt.show()
The preceding script will produce the following graph:

How it works...
The data
variable contains three series of four values. The preceding script will show three bar charts of four bars. The bars will have a thickness of 0.25 units. Each bar chart will be shifted 0.25 units from the previous one. Color has been added for clarity. This topic will be detailed in Chapter 2, Customizing the Color and Styles.
There's more...
The code shown in the preceding section is quite tedious as we repeat ourselves by shifting the three bar charts manually. We can do this better by using the following code:
import numpy as np import matplotlib.pyplot as plt data = [[5., 25., 50., 20.], [4., 23., 51., 17.], [6., 22., 52., 19.]] color_list = ['b', 'g', 'r'] gap = .8 / len(data) for i, row in enumerate(data): X = np.arange(len(row)) plt.bar(X + i * gap, row, width = gap, color = color_list[i % len(color_list)]) plt.show()
Here, we iterate over each row of data with the loop for i, row in enumerate(data)
. The iterator enumerate
returns both the current row and its index. Generating the position of each bar for one bar chart is done with a list comprehension. This script will produce the same result as the previous script, but would not require any change if we add rows or columns of data.
- 極簡算法史:從數(shù)學(xué)到機(jī)器的故事
- 高手是如何做產(chǎn)品設(shè)計的(全2冊)
- 數(shù)字媒體應(yīng)用教程
- Linux核心技術(shù)從小白到大牛
- Reactive Programming with Swift
- R語言游戲數(shù)據(jù)分析與挖掘
- Silverlight魔幻銀燈
- AppInventor實(shí)踐教程:Android智能應(yīng)用開發(fā)前傳
- Keras深度學(xué)習(xí)實(shí)戰(zhàn)
- 微信小程序開發(fā)實(shí)戰(zhàn):設(shè)計·運(yùn)營·變現(xiàn)(圖解案例版)
- Vue.js 3應(yīng)用開發(fā)與核心源碼解析
- Java 9 Programming By Example
- Python Machine Learning Cookbook
- 大規(guī)模語言模型開發(fā)基礎(chǔ)與實(shí)踐
- Android應(yīng)用開發(fā)攻略