Python图传奇密钥格式

时间:2015-06-11 14:49:20

标签: python matplotlib

我试图在python中绘制一组数据。我使用matplotlib.pyplot库来做到这一点。

我把一切都搞定了,但是我遇到了这个问题,传奇中的最后一个键出现的格式比其他键要奇怪。我尝试做不同的设置来解决这个问题到目前为止没有运气...有人可以帮我修复CH4(A)以与其他键相同的格式显示吗?

格式中的格式看起来很像(我不能发布图片,直到我获得10个声誉

CH1(A)

CH2(A)

CH3(A)

CH4

(A

以下是我设置图例的代码。

legends = data[16]
legends = legends.split(",")

if numChannels == 1:
    plt.plot(raw[:,0],raw[:,1], label=legends[1] + " (" + units[1] + ")")
elif numChannels == 2:
    plt.plot(raw[:,0],raw[:,1], label=legends[1] + " (" + units[1] + ")")
    plt.plot(raw[:,0],raw[:,2], label=legends[2] + " (" + units[2] + ")")
elif numChannels == 3:
    plt.plot(raw[:,0],raw[:,1], label=legends[1] + " (" + units[1] + ")")
    plt.plot(raw[:,0],raw[:,2], label=legends[2] + " (" + units[2] + ")")
    plt.plot(raw[:,0],raw[:,3], label=legends[3] + " (" + units[3] + ")")
elif numChannels == 4:
    plt.plot(raw[:,0],raw[:,1], label=legends[1] + " (" + units[1] + ")")
    plt.plot(raw[:,0],raw[:,2], label=legends[2] + " (" + units[2] + ")")
    plt.plot(raw[:,0],raw[:,3], label=legends[3] + " (" + units[3] + ")")
    plt.plot(raw[:,0],raw[:,4], label=legends[4] + " (" + units[4] + ")")
plt.legend(loc=0)
plt.xlabel(legends[0])
plt.ylabel("Data")
plt.title(filestr)
plt.show()

图例是我从.csv文件中读取的数据。我不确定为什么会这样。这只发生在最后一个传奇。例如。如果我有4个数据集和第3个图,它们会很好,但是如果我绘制所有4个或只有1个数据集和图,则键的格式不同,如上所示。

1 个答案:

答案 0 :(得分:0)

我认为您units[4]数据可能包含一些新行字符(\n),这些字符会导致奇怪的图例格式。如果手动设置图例和单位字符串,则会得到正确格式化的内容,

import numpy as np
import matplotlib.pyplot as plt

raw = np.random.random((20,5))
legends = [" ", "CH1 ","CH2 ","CH3 ","CH4 "]
units = [" ", "A","A","A","A"]
numChannels = 4

if numChannels == 1:
    plt.plot(raw[:,0],raw[:,1], label=legends[1] + " (" + units[1] + ")")
elif numChannels == 2:
    plt.plot(raw[:,0],raw[:,1], label=legends[1] + " (" + units[1] + ")")
    plt.plot(raw[:,0],raw[:,2], label=legends[2] + " (" + units[2] + ")")
elif numChannels == 3:
    plt.plot(raw[:,0],raw[:,1], label=legends[1] + " (" + units[1] + ")")
    plt.plot(raw[:,0],raw[:,2], label=legends[2] + " (" + units[2] + ")")
    plt.plot(raw[:,0],raw[:,3], label=legends[3] + " (" + units[3] + ")")
elif numChannels == 4:
    plt.plot(raw[:,0],raw[:,1], label=legends[1] + " (" + units[1] + ")")
    plt.plot(raw[:,0],raw[:,2], label=legends[2] + " (" + units[2] + ")")
    plt.plot(raw[:,0],raw[:,3], label=legends[3] + " (" + units[3] + ")")
    plt.plot(raw[:,0],raw[:,4], label=legends[4] + " (" + units[4] + ")")
plt.legend(loc=0)
plt.xlabel(legends[0])
plt.ylabel("Data")
plt.show()

给出, enter image description here