ax.bar()绘图要如何改变横坐标的字体大小
时间: 2024-03-10 20:43:55 浏览: 411
在使用 `ax.bar()` 函数绘图时,可以通过设置 `xticks` 和 `xticklabels` 参数来改变横坐标的字体大小。
具体实现方法如下:
```python
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.bar(x=[1, 2, 3], height=[10, 20, 30])
ax.set_xticks([1, 2, 3])
ax.set_xticklabels(['A', 'B', 'C'], fontsize=12)
plt.show()
```
在上述代码中,我们通过 `set_xticks()` 函数设置横坐标上的刻度位置,并通过 `set_xticklabels()` 函数设置横坐标上的标签文本,并将字体大小设置为 12。这样就可以改变横坐标的字体大小了。
需要注意的是,这里的 `fontsize` 参数实际上是用来设置标签文本的字体大小,而不是横坐标轴的字体大小。如果需要改变横坐标轴的字体大小,可以使用 `tick_params()` 函数,例如:
```python
ax.tick_params(axis='x', labelsize=12)
```
这样就可以将横坐标轴上的刻度标签字体大小设置为 12。
相关问题
groups_unitprice_area = df["unitPriceValue"].groupby(df["areaName"]) #数据分组、数据运算和聚合 mean_unitprice = groups_unitprice_area.mean() mean_unitprice.index.name = "" fig = plt.figure(figsize=(12,7)) ax = fig.add_subplot(111) ax.set_ylabel("单价(元/平米)",fontsize=14) ax.set_title("各区域二手房平均单价",fontsize=18) jzmj_result.plot(kind="bar", ax=ax, fontsize=12)如何让横坐标显示为各区域名称
要让横坐标显示为各区域名称,可以在绘图之前进行设置。你可以使用`ax.set_xticklabels()`函数来设置横坐标的标签。
在你的代码中,可以在`jzmj_result.plot(kind="bar", ax=ax, fontsize=12)`之前添加以下代码来设置横坐标的标签:
```python
ax.set_xticklabels(mean_unitprice.index, rotation=45)
```
这里的`mean_unitprice.index`表示使用`mean_unitprice`的索引作为横坐标的标签。`rotation=45`表示将标签旋转45度,这样可以防止标签重叠。
完整的代码如下:
```python
groups_unitprice_area = df["unitPriceValue"].groupby(df["areaName"]) #数据分组、数据运算和聚合
mean_unitprice = groups_unitprice_area.mean()
mean_unitprice.index.name = ""
fig = plt.figure(figsize=(12,7))
ax = fig.add_subplot(111)
ax.set_ylabel("单价(元/平米)",fontsize=14)
ax.set_title("各区域二手房平均单价",fontsize=18)
ax.set_xticklabels(mean_unitprice.index, rotation=45)
mean_unitprice.plot(kind="bar", ax=ax, fontsize=12)
```
这样,横坐标就会显示为各区域名称,并且以45度的角度旋转,避免标签重叠。
修改一下横坐标的顺序
要修改横坐标的顺序,可以先将结果表格中的列顺序调整一下,再进行绘图。可以使用 `reindex` 方法来重新排序列的顺序。修改代码如下:
```
import pandas as pd
import matplotlib.pyplot as plt
# 创建 DataFrame
df = pd.DataFrame({
'姓名': ['张三', '李四', '王五', '赵六', '钱七', '孙八'],
'年级': [1, 2, 1, 2, 3, 3],
'上网时长段': ['<1h', '1-2h', '2-3h', '3-4h', '4-5h', '>5h']
})
# 按年级和上网时长段分组,并统计每个年级内每个上网时长段的学生人数
result = df.groupby(['年级', '上网时长段'])['姓名'].count().unstack()
# 修改列的顺序
result = result.reindex(columns=['<1h', '1-2h', '2-3h', '3-4h', '4-5h', '>5h'])
# 绘制合并后的条形图
fig, ax = plt.subplots(figsize=(8, 6))
result.plot(kind='bar', ax=ax, width=1)
ax.legend(title='年级')
ax.set_xlabel('上网时长段')
ax.set_ylabel('学生人数')
plt.show()
```
这段代码中,我们在使用 `reindex` 方法时,将列的顺序改为了 `<1h`, `1-2h`, `2-3h`, `3-4h`, `4-5h`, `>5h`,然后再进行绘图。
阅读全文