我正在嘗試制作一個程式,該程式使用 csv 檔案中的給定點繪制圖形,該檔案每行包含 4 個字串(點數、x pos、y pos、顏色),但所花費的時間高得離譜,所以我正在尋找可以讓它更快的想法。
from matplotlib import pyplot as plt
from matplotlib import style
import csv
style.use('ggplot')
s = 0.5
with open('total.csv') as f:
f_reader = csv.reader(f, delimiter=',')
for row in f_reader:
plt.scatter(str(row[1]), str(row[2]), color=str(row[3]), s=s)
plt.savefig("graph.png", dpi=1000)
uj5u.com熱心網友回復:
第一步是呼叫scatter一次而不是每個點,而不添加對 numpy 和 pandas 的依賴,它可能看起來像:
from matplotlib import pyplot as plt
from matplotlib import style
import csv
style.use("ggplot")
s = 0.5
x = []
y = []
c = []
with open("total.csv") as f:
f_reader = csv.reader(f, delimiter=",")
for row in f_reader:
x.append(row[1])
y.append(row[2])
c.append(row[3])
plt.scatter(x, y, color=c, s=s)
plt.savefig("graph.png", dpi=1000)
然后也許嘗試一下pandas.read_csv哪個會給你一個 Pandas 資料框,允許你在沒有for回圈的情況下訪問你的 CSV 的列,這可能會更快。
每次嘗試變體時,都要衡量(可能在較小的檔案中)了解哪些有幫助,哪些沒有幫助所花費的時間,換句話說,不要盲目地嘗試增強性能。
使用熊貓它看起來像:
from matplotlib import pyplot as plt
from matplotlib import style
import pandas as pd
style.use("ggplot")
total = pd.read_csv("total.csv")
plt.scatter(total.x, total.y, color=total.color, s=0.5)
plt.savefig("graph.png", dpi=1000)
如果你想了解更多關于 Pandas 性能的良好實踐,我喜歡No more sad pandas talk,看看它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/342640.html
標籤:Python matplotlib 图形 分散
上一篇:帶有PolyCollection物件的單獨圖形中的Matplotlib圖例
下一篇:從3d圖中洗掉刻度
