我在用matplotlib绘制柱状图时,中文字变成了方框,怎么办
时间: 2024-02-26 19:55:03 浏览: 152
这可能是因为matplotlib默认不支持中文字体导致的。你可以按照以下步骤来解决这个问题:
1. 安装中文字体库
例如,你可以安装SimHei字体。在Windows系统中,可以在命令行中输入以下命令进行安装:
```
pip install -U matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install fonttools -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install -U https://github.com/adobe-fonts/source-han-sans/raw/release/OTF/SourceHanSansSC.zip -i https://pypi.tuna.tsinghua.edu.cn/simple
```
2. 配置matplotlib参数
在代码中添加以下代码,设置字体为SimHei:
```
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
```
其中,`font.sans-serif`指定了使用的字体,`axes.unicode_minus`用于显示负号。
这样,你就可以愉快地使用中文绘制matplotlib图表了。
相关问题
import matplotlib.pyplot as plt from collections import Counter # 获取出现次数最多的前10个元素 counter = Counter(investors_list) most_common = counter.most_common(10) # 将元素名称和出现次数分别存储在两个列表中 names = [x[0] for x in most_common][::-1] # 改为降序排列 counts = [x[1] for x in most_common][::-1] # 改为降序排列 # 绘制水平柱状图,并更换颜色为RGB(138, 185, 182) plt.barh(names, counts, color=(138/255, 185/255, 182/255)) # 在柱体顶部添加数据标签 for i, v in enumerate(counts): plt.text(v + 0.5, i, str(v), color='blue', fontsize=12) # 设置图表标题和坐标轴标签 plt.title('Top 10 Investors') plt.xlabel('Count') plt.ylabel('Investor') # 显示图表 plt.show()修改上述代码,把方框变成rgb254.254.254的,x、y轴的标签变成rgb167.167.167
import matplotlib.pyplot as plt
from collections import Counter
# 获取出现次数最多的前10个元素
counter = Counter(investors_list)
most_common = counter.most_common(10)
# 将元素名称和出现次数分别存储在两个列表中
names = [x[0] for x in most_common][::-1] # 改为降序排列
counts = [x[1] for x in most_common][::-1] # 改为降序排列
# 绘制水平柱状图,并更换颜色为RGB(254, 254, 254)
plt.barh(names, counts, color=(254/255, 254/255, 254/255))
# 在柱体顶部添加数据标签
for i, v in enumerate(counts):
plt.text(v + 0.5, i, str(v), color='blue', fontsize=12)
# 设置图表标题和坐标轴标签
plt.title('Top 10 Investors', color=(167/255, 167/255, 167/255))
plt.xlabel('Count', color=(167/255, 167/255, 167/255))
plt.ylabel('Investor', color=(167/255, 167/255, 167/255))
# 显示图表
plt.show()
import matplotlib.pyplot as plt from collections import Counter 获取出现次数最多的前10个元素 counter = Counter(investors_list) most_common = counter.most_common(10) 将元素名称和出现次数分别存储在两个列表中 names = [x[0] for x in most_common][::-1] # 改为降序排列 counts = [x[1] for x in most_common][::-1] # 改为降序排列 绘制水平柱状图,并更换颜色为RGB(254, 254, 254) plt.barh(names, counts, color=(254/255, 254/255, 254/255)) 在柱体顶部添加数据标签 for i, v in enumerate(counts): plt.text(v + 0.5, i, str(v), color='blue', fontsize=12) 设置图表标题和坐标轴标签 plt.title('Top 10 Investors', color=(167/255, 167/255, 167/255)) plt.xlabel('Count', color=(167/255, 167/255, 167/255)) plt.ylabel('Investor', color=(167/255, 167/255, 167/255)) 显示图表 plt.show()上述代码把方框线去掉
你可以使用plt.box(False)来去掉图表的方框线。下面是修改后的代码:
import matplotlib.pyplot as plt
from collections import Counter
# 获取出现次数最多的前10个元素
counter = Counter(investors_list)
most_common = counter.most_common(10)
# 将元素名称和出现次数分别存储在两个列表中
names = [x[0] for x in most_common][::-1] # 改为降序排列
counts = [x[1] for x in most_common][::-1] # 改为降序排列
# 绘制水平柱状图,并更换颜色为RGB(254, 254, 254)
plt.barh(names, counts, color=(254/255, 254/255, 254/255))
plt.box(False) # 去掉方框线
# 在柱体顶部添加数据标签
for i, v in enumerate(counts):
plt.text(v + 0.5, i, str(v), color='blue', fontsize=12)
# 设置图表标题和坐标轴标签
plt.title('Top 10 Investors', color=(167/255, 167/255, 167/255))
plt.xlabel('Count', color=(167/255, 167/255, 167/255))
plt.ylabel('Investor', color=(167/255, 167/255, 167/255))
# 显示图表
plt.show()
阅读全文