我对使用 matplotlib 和 seaborn 还很陌生,而且我真的找不到任何关于如何做到这一点的“傻瓜”指南。我在尝试使用我能找到的指南中的代码时不断收到错误消息。我想我很难接受他们的代码并知道如何将其应用于我的问题。
我想制作一个像这里这样的情节:1和 2 。我有一个数据文件,其中有两列数据,范围从 -180 到 180。
这是我对代码的尝试:
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from scipy.stats import kendalltau
sns.set(style="ticks")
f2 = open("dihs23")
lines = f2.readlines()
f2.close()
x = []
y = []
for line in lines:
p = line.split()
x.append(float(p[0]))
y.append(float(p[1]))
sns.jointplot(x, y, kind="hex", stat_func=kendalltau, color="#4CB391")
sns.plt.show()
返回错误
Traceback (most recent call last):
File "heatmap.py", line 30, in <module>
sns.jointplot(x, y, kind="hex", stat_func=kendalltau, color="#4CB391")
File "/usr/local/lib/python2.7/dist-packages/seaborn/distributions.py", line 973, in jointplot
xlim=xlim, ylim=ylim)
File "/usr/local/lib/python2.7/dist-packages/seaborn/axisgrid.py", line 1133, in __init__
x = x[not_na]
TypeError: only integer arrays with one element can be converted to an index
我猜测数据格式的某些方面是问题的一部分,但我不确定如何解决它。
感谢您的帮助!
最佳答案
尝试使用 NumPy 将列表
转换为数组
x_axis = np.asarray(x)
y_axis = np.asarray(y)
关于python - 如何使用seaborn从数据文件制作hexbin图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32514360/