python中绘图时,出现坐标轴中文字体不显示或显示错误的问题

在绘制图形时,出现坐标轴中文字体不显示或显示错误的问题

         通常是因为Matplotlib默认使用的字体不支持中文字符。我们需要手动设置字体,使其能够正确显示中文

以下是解决办法的步骤:

    1. 安装支持中文的字体:确保系统中已经安装了支持中文的字体,例如SimHei(黑体)。
    2. 配置Matplotlib字体:在代码中添加配置,使Matplotlib使用支持中文的字体。

可以通过以下代码来解决中文显示问题:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<span class="kwd">import</span><span class="pln"> seaborn </span><span class="kwd">as</span><span class="pln"> sns
</span><span class="kwd">import</span><span class="pln"> matplotlib</span><span class="pun">.</span><span class="pln">pyplot </span><span class="kwd">as</span><span class="pln"> plt
</span><span class="kwd">import</span><span class="pln"> pandas </span><span class="kwd">as</span><span class="pln"> pd
 
</span><span class="com"># 设置中文字体</span><span class="pln">
plt</span><span class="pun">.</span><span class="pln">rcParams</span><span class="pun">[</span><span class="str">'font.sans-serif'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="str">'SimHei'</span><span class="pun">]</span><span class="pln">  </span><span class="com"># 使用黑体</span><span class="pln">
plt</span><span class="pun">.</span><span class="pln">rcParams</span><span class="pun">[</span><span class="str">'axes.unicode_minus'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">False</span><span class="pln">    </span><span class="com"># 解决坐标轴负号显示问题</span><span class="pln">
 
</span><span class="com"># 创建数据框</span><span class="pln">
data </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="str">'无人机1'</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="lit">85</span><span class="pun">,</span><span class="pln"> </span><span class="lit">75</span><span class="pun">,</span><span class="pln"> </span><span class="lit">90</span><span class="pun">,</span><span class="pln"> </span><span class="lit">95</span><span class="pun">,</span><span class="pln"> </span><span class="lit">80</span><span class="pun">],</span><span class="pln">
    </span><span class="str">'无人机2'</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="lit">78</span><span class="pun">,</span><span class="pln"> </span><span class="lit">68</span><span class="pun">,</span><span class="pln"> </span><span class="lit">85</span><span class="pun">,</span><span class="pln"> </span><span class="lit">90</span><span class="pun">,</span><span class="pln"> </span><span class="lit">70</span><span class="pun">],</span><span class="pln">
    </span><span class="str">'无人机3'</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="lit">92</span><span class="pun">,</span><span class="pln"> </span><span class="lit">85</span><span class="pun">,</span><span class="pln"> </span><span class="lit">88</span><span class="pun">,</span><span class="pln"> </span><span class="lit">92</span><span class="pun">,</span><span class="pln"> </span><span class="lit">85</span><span class="pun">],</span><span class="pln">
    </span><span class="str">'无人机4'</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="lit">88</span><span class="pun">,</span><span class="pln"> </span><span class="lit">90</span><span class="pun">,</span><span class="pln"> </span><span class="lit">95</span><span class="pun">,</span><span class="pln"> </span><span class="lit">85</span><span class="pun">,</span><span class="pln"> </span><span class="lit">75</span><span class="pun">],</span><span class="pln">
    </span><span class="str">'无人机5'</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="lit">80</span><span class="pun">,</span><span class="pln"> </span><span class="lit">70</span><span class="pun">,</span><span class="pln"> </span><span class="lit">80</span><span class="pun">,</span><span class="pln"> </span><span class="lit">88</span><span class="pun">,</span><span class="pln"> </span><span class="lit">82</span><span class="pun">]</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
tasks </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="str">'任务分配完成度'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'路径规划效率'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'目标识别准确率'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'重组成功率'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'联合打击精度'</span><span class="pun">]</span><span class="pln">
 
df </span><span class="pun">=</span><span class="pln"> pd</span><span class="pun">.</span><span class="typ">DataFrame</span><span class="pun">(</span><span class="pln">data</span><span class="pun">,</span><span class="pln"> index</span><span class="pun">=</span><span class="pln">tasks</span><span class="pun">)</span><span class="pln">
 
</span><span class="com"># 生成热力图</span><span class="pln">
plt</span><span class="pun">.</span><span class="pln">figure</span><span class="pun">(</span><span class="pln">figsize</span><span class="pun">=(</span><span class="lit">10</span><span class="pun">,</span><span class="pln"> </span><span class="lit">6</span><span class="pun">))</span><span class="pln">
sns</span><span class="pun">.</span><span class="pln">heatmap</span><span class="pun">(</span><span class="pln">df</span><span class="pun">,</span><span class="pln"> annot</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">,</span><span class="pln"> cmap</span><span class="pun">=</span><span class="str">'YlGnBu'</span><span class="pun">,</span><span class="pln"> cbar</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">)</span><span class="pln">
plt</span><span class="pun">.</span><span class="pln">title</span><span class="pun">(</span><span class="str">'无人机蜂群作战评估热力图'</span><span class="pun">)</span><span class="pln">
plt</span><span class="pun">.</span><span class="pln">xlabel</span><span class="pun">(</span><span class="str">'无人机'</span><span class="pun">)</span><span class="pln">
plt</span><span class="pun">.</span><span class="pln">ylabel</span><span class="pun">(</span><span class="str">'任务/指标'</span><span class="pun">)</span><span class="pln">
plt</span><span class="pun">.</span><span class="pln">show</span><span class="pun">()</span>

 代码: 

    这个设置将字体设为SimHei(黑体),从而正确显示中文字符。同时,还解决了坐标轴上负号显示的问题。如果系统中没有安装SimHei字体,可以安装其他支持中文的字体并替换字体名称。

1
2
3
<span class="com"># 设置中文字体</span><span class="pln">
plt</span><span class="pun">.</span><span class="pln">rcParams</span><span class="pun">[</span><span class="str">'font.sans-serif'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="str">'SimHei'</span><span class="pun">]</span><span class="pln">  </span><span class="com"># 使用黑体</span><span class="pln">
plt</span><span class="pun">.</span><span class="pln">rcParams</span><span class="pun">[</span><span class="str">'axes.unicode_minus'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">False</span><span class="pln">    </span><span class="com"># 解决坐标轴负号显示问题</span>
posted @   taohuaxiaochunfeng  阅读(1278)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示