【发布时间】:2018-06-15 23:29:05
【问题描述】:
我有几个 .csv 文件,我想从这些文件中绘制图表。 这些文件包含两列,每个 csv 文件的第一列都是相同的。
file1.csv:
20 -4.140462670
25 -4.140537060
30 -4.140571620
35 -4.140581580
40 -4.140584350
file2.csv:
20 -4.140468880
25 -4.140542900
30 -4.140577590
35 -4.140587560
40 -4.140590330
我尝试使用下面的脚本来绘制第一个:
import matplotlib.pyplot as plt
from matplotlib.ticker import FormatStrFormatter
with open('file1.csv') as f:
f=[x.strip() for x in f if x.strip()]
data=[tuple(map(float,x.split())) for x in f[0:]]
oX=[x[0] for x in data]
oY=[x[1] for x in data]
plt.figure(figsize=(9,6))
ax = plt.subplot(111)
ax.yaxis.set_major_formatter(FormatStrFormatter('%.4f'))
ax.plot(oX, oY, color='blue', linestyle='dashdot', linewidth=2, marker='o', markerfacecolor='red', markeredgecolor='black',markeredgewidth=2, markersize=6)
plt.show()
但我想绘制一个包含两条曲线(file1.csv 和 file2.csv)的图形
另外,问题解决(使用xmgrace软件)使用命令:xmgrace -free -nxy *
我的问题是:我可以在读取多个文件后绘制包含多条曲线的图形吗? csv (file1.csv, file2.csv, file3.csv ....)。
我注意到我有:
1) n 个 CSV (file1.csv, file2.csv, file3.csv ....)。
2) X 坐标相同
3)不同的Y坐标
【问题讨论】:
-
是的,您可以在一个图中多次绘制,请参阅:stackoverflow.com/questions/21254472/… 如果对您没有帮助,请告诉我。
-
谢谢C。 Colin,是的,我知道我们将 plt.plot (x, y) 线相乘以在同一图中绘制不同的曲线。但问题在于读取 csv 文件,因为文件的数量并不总是相同。
-
好的,那么您的问题是“如何读取多个 CSV 文件、存储数据并在一个图中绘图?”?另外,如果您有 n 个 CSV 文件,它们都会给您相同的 X 坐标(我已经知道 Y 坐标不同)?
-
你是对的。
-
是的,确实如此。 n CSV 数量;相同的 X 坐标;不同的Y坐标
标签: python csv matplotlib