p=plt.figure(figsize=(12,6),dpi=1080) columns=counts_x.index values=counts_x.values labels=['新建', '改建', '0', '暂无'] plt.bar(range(4),values,width=0.5) plt.xlabel('建设性质') plt.ylabel('数量') plt.xticks(range(4),labels) plt.title("各市公共厕所的建设类型柱状图") for i in range(len(values)): plt.text(i, values[i], "%s" % values[i], va='center') plt.show()
时间: 2023-11-26 08:03:19 浏览: 75
这段代码主要是用来绘制各市公共厕所的建设类型柱状图。以下是一些可以进行优化的建议:
1. 将代码分成多行,使其更易读。例如,将 `labels` 的定义放在第一行后面。
2. 使用 `f-string` 来格式化字符串,可以让代码更简洁。例如,将 `plt.title("各市公共厕所的建设类型柱状图")` 改为 `plt.title(f"各市公共厕所的建设类型柱状图")`。
3. 将 `range(4)` 改为 `range(len(labels))`,这样可以使代码更具有通用性,适用于不同数量的标签。
4. 使用 `zip()` 函数来遍历 `labels` 和 `values`,这样可以更加简洁地生成 `ticks` 和 `text`。
5. 将 `dpi` 的值调整为更合适的值,使图像在不同设备上显示效果更好。可以根据实际情况进行调整。
下面是优化后的代码:
```python
import matplotlib.pyplot as plt
# 数据
counts_x = pd.Series([10, 20, 30, 40], index=['新建', '改建', '0', '暂无'])
# 绘图
fig = plt.figure(figsize=(12, 6), dpi=150)
ax = fig.add_subplot(1, 1, 1)
# 绘制柱状图
ax.bar(range(len(counts_x)), counts_x.values, width=0.5)
# 设置标签
labels = ['新建', '改建', '0', '暂无']
ax.set_xticks(range(len(labels)))
ax.set_xticklabels(labels)
ax.set_xlabel('建设性质')
ax.set_ylabel('数量')
ax.set_title(f"各市公共厕所的建设类型柱状图")
# 添加数值标签
for label, value in zip(labels, counts_x.values):
ax.text(labels.index(label), value, f"{value}", ha='center', va='bottom')
# 显示图像
plt.show()
```
这样,代码更加清晰易读,并且具有更好的通用性。
阅读全文