python dataframe某2列数据要做成柱形图 自定义柱形图每个柱子的统计范围,每个柱子范围不一样,做成一个2列数据的比对柱形图
时间: 2023-12-14 17:39:27 浏览: 22
您可以使用`matplotlib`库来绘制柱形图,并通过自定义柱子的宽度来实现每个柱子范围不同的效果。下面是一个示例代码:
```python
import matplotlib.pyplot as plt
import pandas as pd
# 生成示例数据
data = {'A': [10, 20, 30, 40], 'B': [5, 15, 25, 35]}
df = pd.DataFrame(data)
# 自定义每个柱子的宽度和位置
widths = [5, 10, 15, 20]
positions = [0, 6, 16, 31]
# 绘制柱形图
fig, ax = plt.subplots()
ax.bar(positions, df['A'], width=widths, color='r', label='A')
ax.bar(positions, df['B'], width=widths, color='b', label='B')
ax.legend()
plt.show()
```
在这个示例中,我们首先生成了一个包含两列数据的DataFrame对象,其中每列都包含四个数值。然后,我们定义了每个柱子的宽度和位置,这里我们让第一个柱子的位置为0,宽度为5,第二个柱子的位置为6,宽度为10,以此类推。最后,我们使用`bar`函数绘制了两列数据对应的柱形图,并指定了每个柱子的宽度和颜色。最后调用`show`函数展示图形。
您可以根据自己的需求修改示例代码中的数据和参数来实现您想要的效果。
相关问题
python dataframe某列数据要做成柱形图 自定义柱形图每个柱子的统计范围,每个柱子范围不一样
要自定义柱形图每个柱子的统计范围,可以使用 pandas 中的 `cut` 函数将数据列划分成不同的区间,然后使用 matplotlib 绘制柱形图。
以下是一个示例代码:
```python
import pandas as pd
import matplotlib.pyplot as plt
# 创建示例数据
data = {
'value': [25, 30, 35, 40, 45, 50, 55, 60, 65],
'label': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']
}
df = pd.DataFrame(data)
# 划分区间
bins = [20, 35, 50, 65]
labels = ['20-35', '35-50', '50-65']
df['range'] = pd.cut(df['value'], bins=bins, labels=labels)
# 统计每个范围的数量
counts = df['range'].value_counts()
# 绘制柱形图
plt.bar(x=counts.index, height=counts.values)
# 添加标签和标题
plt.xlabel('Range')
plt.ylabel('Count')
plt.title('Customized Bar Chart')
# 显示图形
plt.show()
```
这段代码将数据列 `value` 划分成了三个范围 `[20, 35), [35, 50), [50, 65]`,统计了每个范围的数量,并绘制了柱形图。你可以根据自己的需求修改数据和区间划分方式。
python dataframe某列数据要做成柱形图 自定义柱形图每个柱子的统计范围,每个柱子范围不一样,添加数据标签
可以使用matplotlib库来绘制自定义柱形图,并添加数据标签。
首先,需要将数据读入到pandas的DataFrame中,然后使用matplotlib绘制柱形图。对于每个柱子的统计范围不一样的情况,可以使用numpy库的arange函数来生成柱子的位置信息和宽度信息。然后,使用matplotlib的bar函数来绘制柱形图,并使用text函数来添加数据标签。
以下是一个示例代码:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 读入数据到DataFrame中
data = pd.DataFrame({
'range': ['0-10', '10-20', '20-30', '30-40', '40-50'],
'count': [20, 35, 45, 30, 25]
})
# 生成每个柱子的位置信息和宽度信息
x_pos = np.arange(len(data))
width = 0.4 * np.ones_like(x_pos)
# 绘制柱形图
fig, ax = plt.subplots()
ax.bar(x_pos, data['count'], width=width)
# 添加数据标签
for i, v in enumerate(data['count']):
ax.text(i, v+1, str(v), ha='center')
# 设置x轴标签和标题
ax.set_xticks(x_pos)
ax.set_xticklabels(data['range'])
ax.set_xlabel('Range')
ax.set_ylabel('Count')
ax.set_title('Customized Bar Chart')
plt.show()
```
运行上述代码,就可以得到一个自定义柱形图,每个柱子的统计范围不一样,并且添加了数据标签。