我正在绘制CSV文件中的2列数据。该图在轴上没有数千个分隔符逗号,这就是我需要的。我在网上找到了一个解决方案,但我似乎无法让它为我工作。
我收到错误消息TypeError:' PolyCollection'对象不可迭代
以下是代码:
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.ticker as tkr
data = pd.read_csv('data.csv')
x = data['meas']
y = data['modeled']
xmin = 0
xmax = 1500
ymin = 0
ymax = 1500
#plt.subplots_adjust(hspace=5)
#plt.subplot(121)
fig, ax =plt.hexbin(x, y, cmap=plt.cm.gnuplot2_r)
plt.axis([xmin, xmax, ymin, ymax])
plt.xlabel("Measured baseflow, in cfs")
plt.ylabel("Simulated baseflow, in cfs")
cb = plt.colorbar()
cb.set_label('count')
p2, = plt.plot([0,1500],[0,1500], c='g')
l2 = plt.legend([p2], ["1:1 Line"], loc=2)
ax.yaxis.set_major_formatter(
tkr.FuncFormatter(lambda y, p: format(int(y), ',')))
#plt.tight_layout(pad=10.0)
plt.savefig('Fig13_hexbinDevBaseflows.jpg')
plt.show()
答案 0 :(得分:0)
plt.hexbin
返回PolyCollection。 fig, ax = plt.hexbin(...)
要求PolyCollection
可以迭代,并且有两部分,因此第一部分可以分配到fig
,第二部分可以分配到ax
。你可能想要这个:
fig, ax = plt.subplots()
plt.hexbin(x, y, cmap=plt.cm.gnuplot2_r)
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.ticker as tkr
data = pd.DataFrame(np.random.randint(1500, size=(100, 2)), columns=['meas', 'modeled'])
# data = pd.read_csv('data.csv')
x = data['meas']
y = data['modeled']
xmin = 0
xmax = 1500
ymin = 0
ymax = 1500
fig, ax = plt.subplots()
plt.hexbin(x, y, cmap=plt.cm.gnuplot2_r)
plt.axis([xmin, xmax, ymin, ymax])
plt.xlabel("Measured baseflow, in cfs")
plt.ylabel("Simulated baseflow, in cfs")
cb = plt.colorbar()
cb.set_label('count')
p2, = plt.plot([0,1500],[0,1500], c='g')
l2 = plt.legend([p2], ["1:1 Line"], loc=2)
ax.yaxis.set_major_formatter(
tkr.FuncFormatter(lambda y, p: format(int(y), ',')))
plt.show()