создать график и сохранить график под тем же именем, что и файл CSV - PullRequest
0 голосов
/ 14 июня 2019

Этот код создаст трехмерный график рассеяния с помощью matplotlib, и я пытаюсь выяснить, как сохранить PNG с тем же именем, что и файл CSV, который я использую для создания кадра данных pandas.

Я могусохраните 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)

1 Ответ

0 голосов
/ 14 июня 2019

Поскольку вы явно указываете имя файла csv во время чтения, почему вы не можете просто сделать следующее. Помните, закомментируйте plt.show() перед сохранением рисунка. Читайте здесь подробнее о том, почему 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 в текущем каталоге , вы также можете сделать следующее, как показано здесь , чтобы получить 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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...