python - Seaborn 热图裁剪 y 轴刻度标签
问题描述
我正在尝试使用带有以下行的 DataFrame 创建热图:
у 7.14e-02 4.29e-01 5.00e-01
ф 0.00e+00 1.00e+00 0.00e+00
х 0.00e+00 1.00e+00 0.00e+00
ц 0.00e+00 1.00e+00 0.00e+00
ч 0.00e+00 9.75e-01 2.50e-02
ш 0.00e+00 1.00e+00 0.00e+00
щ 0.00e+00 1.00e+00 0.00e+00
然而,当我尝试从这些数据创建热图时,我最终得到一个看起来像这样的 y 轴(注意像 у、ф 和 ш 这样的字母,它们的底部/右侧被剪掉了)。
这是我用来初始化它的代码:
fig, ax = plt.subplots(figsize=(15, 15)
plot = sns.heatmap(df_result, annot=True, fmt=".2f")
编辑:我已经测试用拉丁字符'y'替换西里尔字符'у'并且它不再被剪裁。这个问题有什么理由特定于西里尔字符吗?
解决方案
读取 csv 时,问题可能出在编码中。
这是csv:
name,value1,value2,value3
у, 7.14e-02, 4.29e-01, 5.00e-01
ф, 0.00e+00, 1.00e+00, 0.00e+00
х, 0.00e+00, 1.00e+00, 0.00e+00
ц, 0.00e+00, 1.00e+00, 0.00e+00
ч, 0.00e+00, 9.75e-01, 2.50e-02
ш, 0.00e+00, 1.00e+00, 0.00e+00
щ, 0.00e+00, 1.00e+00, 0.00e+00
在 csv 中读取为:
df = pd.read_csv("data.csv",encoding='utf-8')
将名称列表另存为 y_labels 和图形:
y_labels = df['name'].tolist()
fig, ax = plt.subplots(figsize = (15, 15))
ax = sns.heatmap(df[['value1','value2','value3']],
yticklabels = y_labels)
推荐阅读
- python - Python FastAPI“发布无法处理的实体”错误
- c# - 如何在 MySQL 的 2 个不同服务器中同步来自 2 个数据库的数据?
- typescript - 为什么我不能访问对象的属性?
- react-native - 试图注册两个同名的视图RNCSafeAreaProvider
- flutter - Flutter TextEditingController clear 不会重置错误信息
- c++ - std::begin 是空的 std::valarray 未定义行为吗?
- arduino - Sim800c 没有收到完整的短信
- node.js - 为部署在 Cloud Run 中的应用构建实时仪表板
- aws-lambda - /lib64/libc.so.6:未找到版本“GLIBC_2.32”
- ansible - Ansible 循环错误:“传递给'循环'的无效数据,它需要一个列表,而不是这个