亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用來自多個 txt 文件的數據創建散點圖

使用來自多個 txt 文件的數據創建散點圖

aluckdog 2021-10-19 16:23:35
我正在嘗試從幾個 txt 文件創建散點圖。所有文件都具有相同的結構:兩列數據和“逗號”作為分隔符:54.1,1265.7,11122.2,18等對于少量文件,我有以下代碼:import numpy as npimport matplotlib.pyplot as pltimport csv# Create datag1=np.loadtxt('214.txt',delimiter=',', unpack=True)g2=np.loadtxt('228.txt',delimiter=',', unpack=True)g3=np.loadtxt('491.txt',delimiter=',', unpack=True)g4=np.loadtxt('647.txt',delimiter=',', unpack=True)data = (g1, g2, g3,g4)colors = ("red", "green", "blue", "black")groups = ("214", "228", "491", "647") # Create plotfig = plt.figure()ax = fig.add_subplot(1, 1, 1)for data, color, group in zip(data, colors, groups):    y, x = data    ax.scatter(x, y, alpha=0.8, c=color, edgecolors='none', s=30, label=group)#Plot settings plt.title('Matplot scatter plot')plt.legend(loc=4)axes = plt.gca()axes.set_xlim([2,30])axes.set_ylim([0,3000])plt.gca().invert_yaxis()plt.show()請告知如何修改它以讀取文件夾中的多個(最多 50 - 100 個)txt 文件,如果它們的數量每次都不同?
查看完整描述

3 回答

?
慕姐8265434

TA貢獻1813條經驗 獲得超2個贊

我會搜索當前目錄中的所有文件,并確定要從中提取數據的文件。這可以通過以下方式完成:


from os import listdir, path


files = [f for f in listdir('.') if path.isfile(f)]

file_names = [file for file in files if file.startswith('file_name_identifer')]

這將為您提供一個文件名列表,其中包含您要提取的數據,然后您可以在 for 循環中逐個加載它們。使用與上面使用的類似的加載技術:


data = []

for file in file_names:

    data.append(np.loadtxt('file', delimiter=',', unpack=True))

您也可以將其展平為生成器表達式:


data = [np.loadtxt('file', delimiter=',', unpack=True) for file in file_names]

如果您的文件沒有以可用于識別它們的內容開頭,您可以簡單地檢查其他方式(更改if file.startswith('file_name_indentifer')為其他內容,可能會檢查它們是否為 .txt 文件,例如:)if file.endswith('.txt')。


查看完整回答
反對 回復 2021-10-19
?
MMTTMM

TA貢獻1869條經驗 獲得超4個贊

您可以使用上述方法得到目錄中的所有文件的列表,這個帖子


然后做這樣的事情:


data = []

for file in filenames:

  data.append(np.loadtxt(file, delimiter=‘,’, unpack = True


#And do everything else you did with data

雖然如果您的數據集大于系統內存中的可用空間,我會考慮在您讀取文件時添加數據點進行繪圖


data = []

colors = [“red”,”green”,”blue”,”balck”]

for i, file in enumerate(filenames):

  data = np.loadtxt(file, delimiter=‘,’,unpack=True)

  group = file.split(‘.’)[0]

  color = colors[i%len(colors)]

  ax.scatter(data[0], data[1], alpha=0.8, c=color, edgecolors=‘none’, s=30, label=group)

PS 引號輸入錯誤(雙引號和單引號),因為我是從移動設備寫的


查看完整回答
反對 回復 2021-10-19
  • 3 回答
  • 0 關注
  • 259 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號