【发布时间】:2016-01-21 02:03:57
【问题描述】:
我尝试在网站上搜索解决方案,但没有找到适合我的解决方案。 我正在尝试绘制一个非常大的热图 - x 轴有 21 个容器,y 轴有 18 个。我正在从 CSV 读取数据,并且在大多数情况下,单元格是空的 - 除了少数.我也在尝试标记轴。
当我绘制热图时,它并没有显示整个事情。我不确定是图形格式还是热图有问题。如果我遗漏任何格式,则该图可以工作 - 但它不会显示所有行/列。当我尝试更改轴限制或设置图形的大小时,它基本上会破坏绘图并且值不会准确显示。
如何让它显示所有列和行,即使值单元格是空的?
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
x_labels = ['A','B','C','D','E','F'
'G','H','I','J','K','L',
'M','N','O','P','Q','R',
'S','T','U']
y_labels =['A','B','C','D','E','F','G','H','I','J',
'K','L','M','N','O','P','Q','R']
#reading in a CSV, data in the file is mostly empty - only 3 of the cells have values in them. I included a link to what the .csv looks like
metrics = pd.read_csv("filename.csv", index_col=0)
fig, ir = plt.subplots()
heatmap = ir.pcolor(metrics, cmap=plt.cm.Spectral)
#trying to set the axis labels. Should this reference the column and row labels in the csv instead of the variable I created?
ir.set_xticklabels(x_labels, minor=False)
ir.set_yticklabels(y_labels, minor=False)
ir.invert_yaxis()
plt.show()
下面是csv 文件的截图:
这是我得到的情节
这是打印数据框的屏幕截图
【问题讨论】:
-
您是否检查过所有数据是否正确传输到变量
metrics?也许您可以通过删除.csv导入来减少示例并生成虚拟数据以在 python 中进行测试。 -
Here 是一个可能有用的示例。首先检查数据是否正确加载,然后确保其绘制正确。
-
我做了一个简单的 print(metrics) 并且输出显示整个 csv 被正确读取。
-
我认为问题实际上可能出在轴标签的格式上。我要么必须缩小字体,要么旋转单词以垂直显示。关于如何做到这一点的任何提示?
-
您能否上传您当前情节的图片,以便我们查看问题所在?
标签: python matplotlib