添加逗号到数千,matplotlib,python

时间:2016-01-13 20:29:30

标签: python matplotlib

我正在绘制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()

1 个答案:

答案 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()

enter image description here