pandas条形图显示数值
时间: 2023-06-07 15:08:21 浏览: 109
是如何设置标签旋转的?
你可以通过在绘图函数中传入参数 `rotation` 来设定标签的旋转角度。例如,如果要将标签逆时针旋转 45 度,可以这样写:
```python
import pandas as pd
import matplotlib.pyplot as plt
# 构造数据
df = pd.DataFrame({
'year': [2018, 2019, 2020, 2021],
'sales': [100, 200, 150, 180]
})
# 绘制条形图并设定标签旋转角度
ax = df.plot(kind='bar', x='year', y='sales')
ax.set_xticklabels(df['year'], rotation=45)
# 显示图形
plt.show()
```
这样,标签文字就会被旋转 45 度,方便观察。
相关问题
pandas绘制条形图添加数值标签
### 回答1:
可以使用matplotlib库中的text函数在条形图上添加数值标签。具体操作可以参考以下代码:
import pandas as pd
import matplotlib.pyplot as plt
# 创建数据
data = {'A': [10, 20, 30], 'B': [20, 30, 40], 'C': [15, 25, 35]}
df = pd.DataFrame(data)
# 绘制条形图
ax = df.plot(kind='bar')
# 添加数值标签
for i in ax.containers:
ax.bar_label(i, label_type='edge')
plt.show()
### 回答2:
在Pandas中绘制条形图并添加数值标签可以通过以下步骤实现:
首先,导入所需的模块和库,包括pandas、matplotlib.pyplot和numpy。
```python
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
```
接下来,创建一个包含要绘制的数据的DataFrame。
```python
data = {'城市': ['北京', '上海', '广州', '深圳'],
'人口': [2154, 2424, 1404, 1092]}
df = pd.DataFrame(data)
```
然后,使用pandas的plot.bar()函数绘制条形图,并将参数设置为添加数值标签。
```python
plt.bar(df['城市'], df['人口'])
plt.ylabel('人口')
plt.xlabel('城市')
plt.title('中国四大一线城市人口')
```
为了在条形图上添加数值标签,我们可以使用matplotlib的text()函数循环遍历每个条形图,并将数值标签添加到每个条形图的中心位置。
```python
for i, v in enumerate(df['人口']):
plt.text(i, v, str(v), ha='center', va='bottom')
```
最后,使用plt.show()函数显示最终的条形图。
```python
plt.show()
```
综上所述,以上步骤可以通过使用Pandas绘制条形图并添加数值标签。
### 回答3:
在使用Pandas绘制条形图时,我们可以通过一些方法来添加数值标签。下面我将介绍两种常用的方法:
方法一:使用annotate函数
1. 首先,我们需要调用Pandas中的plot函数,选择绘制条形图。例如:df.plot(kind='bar')。
2. 然后,我们可以使用for循环遍历每个条形,并使用annotate函数添加数值标签。
例如:
```
for p in ax.patches:
ax.annotate(str(int(p.get_height())), (p.get_x() + p.get_width() / 2, p.get_height()), ha='center', va='bottom')
```
这段代码将在每个条形的中间位置添加数值标签。
方法二:使用plt.text函数
1. 首先,我们需要调用Pandas中的plot函数,选择绘制条形图。例如:df.plot(kind='bar')。
2. 然后,我们可以使用for循环遍历每个条形,并使用plt.text函数添加数值标签。
例如:
```
for i in ax.patches:
ax.text(i.get_x() + i.get_width() / 2, i.get_height(), str(int(i.get_height())), ha='center', va='bottom')
```
这段代码将在每个条形的顶部位置添加数值标签。
以上两种方法都可以在绘制条形图时添加数值标签。你可以根据实际需求选择其中一种方法。需要注意的是,pandas和matplotlib的版本会对代码的兼容性有一定影响,建议在使用之前确认自己所使用的版本。
pandas绘制条形图及帕累托图
条形图是一种常用的可视化方法,用于比较不同类别下的数值数据。帕累托图是一种特殊的条形图,用于显示按照重要性排序的因素的贡献程度。
在pandas中,可以使用plot.bar()方法来绘制条形图,使用plot.barh()方法来绘制水平条形图。而绘制帕累托图则需要按照重要性排序后计算累计贡献率,并使用plot.bar()方法绘制两个数据系列,一个是原始数据的条形图,一个是累计贡献率的线图。
下面是一个简单的例子,演示如何使用pandas绘制条形图及帕累托图。
首先,我们需要导入必要的库并生成一些示例数据。
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 生成示例数据
np.random.seed(123)
data = pd.DataFrame({'A': np.random.randint(1, 10, 5),
'B': np.random.randint(1, 10, 5),
'C': np.random.randint(1, 10, 5)})
data.index = ['a', 'b', 'c', 'd', 'e']
print(data)
```
输出结果如下:
```
A B C
a 3 3 3
b 3 7 2
c 7 2 4
d 2 4 7
e 4 6 2
```
接下来,我们可以使用plot.bar()方法绘制条形图。
```python
data.plot.bar()
plt.show()
```
运行结果如下:
![条形图](https://cdn.jsdelivr.net/gh/datalaoshi/images/pandas-bar-chart.png)
我们也可以使用plot.barh()方法绘制水平条形图。
```python
data.plot.barh()
plt.show()
```
运行结果如下:
![水平条形图](https://cdn.jsdelivr.net/gh/datalaoshi/images/pandas-horizontal-bar-chart.png)
接下来,我们可以按照某一列数据的大小排序,计算每个类别的累计贡献率,并绘制帕累托图。
```python
# 按照列B的大小排序
sorted_data = data.sort_values('B', ascending=False)
# 计算每个类别的累计贡献率
cumulative = sorted_data.sum().cumsum() / sorted_data.sum().sum()
# 绘制帕累托图
fig, ax1 = plt.subplots()
ax1.bar(sorted_data.columns, sorted_data.sum())
ax1.tick_params(axis='y', labelcolor='tab:blue')
ax1.set_ylabel('Frequency', color='tab:blue')
ax2 = ax1.twinx()
ax2.plot(sorted_data.columns, cumulative, color='tab:red', marker='o')
ax2.tick_params(axis='y', labelcolor='tab:red')
ax2.set_ylabel('Cumulative Contribution', color='tab:red')
plt.show()
```
运行结果如下:
![帕累托图](https://cdn.jsdelivr.net/gh/datalaoshi/images/pandas-pareto-chart.png)