列表中的颜色条

时间:2017-11-10 23:16:48

标签: python

我有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"添加一个垂直颜色条。名单。非常感谢您的帮助。

1 个答案:

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

Figure 1 Figure 2 Figure 3