我有一個資料框架df,有4個唯一的UID - 1001,1002,1003,1004.
我想在python中寫一個用戶定義的函式,它的作用如下:
- 增長曲線-為每個獨特的
UID繪制Turbidity對Time的圖。Turbidity的值是Time_1,Time_2,Time_3,Time_4&Time_5列中的數值。例如,UID = 1003將在每個圖形上有4個繪圖 。
在每個圖形上添加一個圖例,如
M L、F L、M R和F R(從列Gen和Type)給每個圖形添加一個標題。例如-
UID:1003 Site:FRX將圖表匯出為
pdf或jpeg或tiff檔案--每頁4個圖表
# The dataset
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
import numpy as np
df= {
'Gen': ['M','M','M','M'。 'F','F','F','F'。 'M','M','M','M'。 'F','F','F','F'】。]
'Site': ['FRX','FRX','FRX','FRX'。 'FRX','FRX','FRX','FRX'。 'FRX','FRX','FRX','FRX'。 'FRX','FRX','FRX','FRX'】。]
'Type': ['L','L','L','L'。 'L','L','L','L'。 'R','R','R','R'。 'R','R','R','R'】。]
'UID'。 [1001,1002,1003,1004。 1001,1002,1003, 1004, 1001,1002,1003, 1004, 1001,1002,1003,1004】。]
'Time1':[100.78,112.34, 108.52, 139. 19,149.02,177.77,79.18, 89. 10,106.78,102.34,128.52, 119. 19,129.02,147.77,169.18,170.11】。]
'Time2':[150.78,162.34, 188.53, 197. 69,208.07,217.76,229.48, 139. 51,146.87,182.54,189.57, 199. 97,229.28,244.73,269.91,249.19】。]
'Time3':[250.78,262.34, 288.53, 297. 69,308.07,317.7,329.81, 339. 15,346.87,382.54,369.59, 399. 97,329.28,347.73,369.91,349.12】。]
'Time4': [240.18,232.14,258.53,276. 69,338.07,307.74,359.16, 339. 25,365.87,392.48,399.97, 410. 75,429.08,448.39,465.15,469.33】。]
'Time5':[270.84,282.14, 298.53,306. 69,318.73,327.47,369.63, 389. 59,398.75,432.18,449.78, 473. 55,494.85,509.39,515.52,539.23]
}
df = pd. DataFrame(df,columns = ['Gen','Site', 'Type', 'UID', 'Time1','Time2','Time3','Time4','Time5'] )
df
我的嘗試
# See below for my thoughts/attempt- I am open to other python libraries and approaches
def graph2pdf(inputdata)。
#1.從寬到長的轉換。
inputdata = pd. melt(df,id_vars = ['Gen','Type', 'UID'], var_name = 'Time',value_name = 'Turbidity')
#
cmaps = ['Reds', 'Blues', 'Greens', 'Greys', 'Yellows']
label_patches = []
for i, cmap in enumerate(cmaps)。
# I want a growth curve not a distribution curve[/span].
sns.kdeplot(x = Time, y = Turbidity,data = data, cmap=cmaps[i] '_d')
label_patch = mpatches.Patch(color=sns.color_palette(cmaps[i])[2], label=label)
label_patches.append(label_patch)
#2.添加圖例。
plt.legend(handles=label_patches, loc='upper left')
#3.添加標題- 'UID number SiteName: FRX'到每個圖表中
plt.title('UID:1003 FRX')
plt.show()
#4.匯出為pdf檔案,即每頁4個圖。
with PdfPages('turbidityvstime_pdf.pdf') as pdf:
plt.figure(figsize=(2,2) # 每頁4個圖形,我預計將來會有更多的頁面。
pdf.savefig() # 將當前圖形保存到pdf頁面。
plt.close()
# 測驗用戶定義的函式
graph2pdf(df)
我希望圖表看起來像下圖一樣(turbidity而不是density在y-axis上,time在x-axis上)。如果可能的話,最好使用白色或透明背景
謝謝你
uj5u.com熱心網友回復:
- I線圖通常不適合于離散資料,因為線的斜率可能意味著不存在的趨勢。
- 這是個離散的資料。
- 這是離散的,因為測量是在離散的時刻進行的,而不是一個連續的時間序列。
- 離散資料最好用柱狀圖進行可視化。
- 使用
seaborn圖層方法,如
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/312388.html標籤:
下一篇:標注X軸的內容重復



