此代码将使用matplotlib创建3d散点图,我试图弄清楚如何保存与用于创建熊猫数据框的CSV文件同名的PNG。
我可以使用以下方式将PNG与.py文件保存在一起:
output_filename = os.path.splitext(__file__)[0] + '.png'
但是如何修改代码以将PNG与CSV文件保存为相同的名称?
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import pandas as pd
import os
output_filename = os.path.splitext(__file__)[0] + '.png'
df = pd.read_csv('RTU_101A_Month2dataCSV.csv',index_col='Date', parse_dates=True)
OAT = pd.Series(df['OAT'])
RAT = pd.Series(df['RAT'])
MAT = pd.Series(df['MAT'])
df['hour'] = df.index.hour
df_OATrat = (OAT - RAT)
df_MATrat = (MAT - RAT)
df_Hour = df['hour']
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x = df_MATrat
y = df_Hour
z = df_OATrat
ax.scatter(x, y, z, c='g', marker='x')
ax.set_xlabel('MAT-RAT')
ax.set_ylabel('Hours in Day')
ax.set_zlabel('OAT-RAT')
plt.show()
plt.savefig(output_filename)
答案 0 :(得分:0)
由于在读取文件时已明确指定csv文件的名称,所以为什么不能简单地执行以下操作。请记住,在保存图形之前,请注释掉plt.show()
。详细了解here,如果在plt.savefig()
之后使用plt.show()
保存空白图形的原因
csv_file = 'RTU_101A_Month2dataCSV.csv'
df = pd.read_csv(csv_file, index_col='Date', parse_dates=True)
# Your code
# plt.show() # <--- Comment this out when saving
plt.savefig(csv_file.split('.csv')[0] + '.png')
# plt.savefig(csv_file.split('.csv')[0], format='png')
假设您在当前目录中只有一个 csv文件,还可以按照here所示执行以下操作,以获取csv
文件名
import glob, os
os.chdir(".")
for file in glob.glob("*.csv"):
csv_file = file.split('.csv')[0]
# Your code
# plt.show() # <--- Comment this out when saving
plt.savefig(csv_file + '.png')