我有500个文件,在每个循环中我打开其中一个,然后将列存储在列表中,然后生成3个图形。在每个循环中,我叠加相应的图形。代码有效,但我不能放置依赖于" t"的错误栏。列表(三个图形应该具有相同的颜色条)。如果它是单个数字我可以使用:plt.colorbar(),如我追加的图所示,但我想为3个数字生成它。
import matplotlib.cm as cm
import matplotlib.pyplot as plt
import numpy as np
f1 = plt.figure()
f2 = plt.figure()
f3 = plt.figure()
ax1 = f1.add_subplot(111)
ax2 = f2.add_subplot(111)
ax3 = f3.add_subplot(111)
t = np.arange(0, 45000*10**5, 90*10**5)
for j in range(1, 501):
x1, x2, x3, x4 = np.loadtxt('file' + str(j), usecols = (1,2,3,4), unpack = True)
ax1.scatter(x1, x2, c=t, cmap=cm.spring)
ax2.scatter(x1, x3, c=t, cmap=cm.spring)
ax3.scatter(x1, x4, c=t, cmap=cm.spring)
f1.savefig('plot1', format = 'pdf', dpi = 1200, bbox_inches = 'tight')
f2.savefig('plot2', format = 'pdf', dpi = 1200, bbox_inches = 'tight')
f3.savefig('plot3', format = 'pdf', dpi = 1200, bbox_inches = 'tight')
我已经看到了一些放置颜色条的例子(例如,http://matplotlib.org/1.3.1/examples/pylab_examples/colorbar_tick_labelling_demo.html),但在我看来它并不适用于我的情况,因为你可以在图中看到我正在附着{{ 3}} enter image description [enter image description here]这里,因为我的数据中的所有空间都已满,并且由于数据的随机性和循环,点可以重叠(我使用的是透明度)。
总之,我想基于" t"添加一个垂直颜色条。名单。非常感谢您的帮助。
答案 0 :(得分:0)
这是基于数组t
中的值向每个图添加垂直颜色条的方式:
import matplotlib.cm as cm
import matplotlib.pyplot as plt
import numpy as np; np.random.seed(0)
import cufflinks as cf
t = np.arange(0, 45000*10**5, 90*10**5)
for j in range(1, 2): # Loop just once for testing (instead of 501 times)
# Load files
# x1, x2, x3, x4 = np.loadtxt('file' + str(j), usecols = (1,2,3,4), unpack = True)
# Generate sample data (instead of loading files)
data = cf.datagen.lines(4, 500)
x1 = data.iloc[:,0]
x2 = data.iloc[:,1]
x3 = data.iloc[:,2]
x4 = data.iloc[:,3]
f1, ax1 = plt.subplots()
sc1 = ax1.scatter(x1, x2, c=t, cmap=cm.spring)
plt.colorbar(sc1)
f2, ax2 = plt.subplots()
sc2 = ax2.scatter(x1, x3, c=t, cmap=cm.spring)
plt.colorbar(sc2)
f3, ax3 = plt.subplots()
sc3 = ax3.scatter(x1, x4, c=t, cmap=cm.spring)
plt.colorbar(sc3)
f1.savefig('plot1.pdf', dpi = 1200, bbox_inches = 'tight')
f2.savefig('plot2.pdf', dpi = 1200, bbox_inches = 'tight')
f3.savefig('plot3.pdf', dpi = 1200, bbox_inches = 'tight')