107 lines
6.1 KiB
Python
107 lines
6.1 KiB
Python
import pandas as pd
|
|
import matplotlib.pyplot as plt
|
|
|
|
# Data for Elektrolyt
|
|
data_elektrolyt = {
|
|
'Frequency': [10.0, 12.8, 16.4, 21.1, 27.0, 34.7, 44.5, 57.1, 73.3, 94.1, 120.7, 154.8, 198.7, 254.9, 327.0, 419.5,
|
|
538.2, 690.4, 885.7, 1136.3, 1457.7, 1870.1, 2399.1, 3077.7, 3948.4, 5065.3, 6498.1, 8336.3, 10694,
|
|
13719, 17600, 22579, 28966, 37160, 47672, 61157, 78457, 100600, 129100, 165600, 212500, 272600,
|
|
349700, 448600, 575500, 738400, 947200, 1215200, 1558900, 2000000],
|
|
'Cp': [104.895, 104.075, 103.54, 102.686, 101.968, 101.24, 100.559, 99.6017, 98.506, 97.3005, 96.0381, 94.6749,
|
|
93.2414, 91.5704, 89.4685, 86.8599, 83.3399, 78.6113, 72.3663, 64.4553, 55.0498, 44.8098, 34.6581, 25.5639,
|
|
18.112, 12.4422, 8.29798, 5.42676, 3.4909, 2.21391, 1.37984, 0.85819, 0.53027, 0.326003, 0.198572, 0.116745,
|
|
0.065337, 0.033992, 0.021283, 0.007813, -0.008515, -0.019496, -0.022002, -0.025269, -0.028138, -0.027727,
|
|
-0.030682, -0.030119, -0.030184, -0.119829],
|
|
'Rp': [1030.805, 925.754, 768.236, 677.815, 522.301, 400.069, 318.919, 247.917, 188.441, 139.598, 101.946, 72.9281,
|
|
50.9228, 35.0056, 23.6547, 15.8551, 10.6114, 7.14092, 4.89005, 3.44207, 2.5192, 1.93264, 1.5605, 1.32286,
|
|
1.17003, 1.07059, 1.00441, 0.959838, 0.929467, 0.910211, 0.897243, 0.88938, 0.883845, 0.880524, 0.87854,
|
|
0.877302, 0.874489, 0.868925, 0.871911, 0.871293, 0.860944, 0.866543, 0.860571, 0.863848, 0.86817, 0.864249,
|
|
0.879133, 0.882055, 0.911985, 0.729654],
|
|
}
|
|
|
|
# Data for Folien
|
|
data_folien = {
|
|
'Frequency': [10.0, 12.8, 16.4, 21.1, 27.0, 34.7, 44.5, 57.1, 73.3, 94.1, 120.7, 154.8, 198.7, 254.9, 327.0, 419.5,
|
|
538.2, 690.4, 885.7, 1136.3, 1457.7, 1870.1, 2399.1, 3077.7, 3948.4, 5065.3, 6498.1, 8336.3, 10694,
|
|
13719, 17600, 22579, 28966, 37160, 47672, 61157, 78457, 100600, 129100, 165600, 212500, 272600,
|
|
349700, 448600, 575500, 738400, 947200, 1215200, 1558900, 2000000],
|
|
'Cp': [98.1703, 98.1546, 98.1372, 98.1121, 98.0995, 98.0874, 98.0812, 98.0566, 98.017, 97.9706, 97.8958, 97.7886,
|
|
97.6216, 97.3707, 97.0083, 96.4013, 95.4586, 93.9833, 91.6877, 88.1895, 83.0096, 75.7376, 66.2256, 54.9048,
|
|
42.8889, 31.6118, 21.9684, 14.6131, 9.38049, 5.83512, 3.49828, 2.04385, 1.14132, 0.58884, 0.252853, 0.052954,
|
|
-0.071438, -0.135339, -0.179777, -0.2034, -0.213339, -0.218015, -0.216205, -0.208263, -0.194701, -0.17637,
|
|
-0.156105, -0.132683, -0.107929, -0.101847],
|
|
'Rp': [50.1878, 31.5219, 19.435, 11.731, 7.1623, 4.36563, 2.65748, 1.6296, 0.997532, 0.609263, 0.373217, 0.228572,
|
|
0.139678, 0.085466, 0.052224, 0.032077, 0.019758, 0.012237, 0.007643, 0.004839, 0.003131, 0.002089, 0.001454,
|
|
0.001067, 0.000832, 0.000689, 0.0006, 0.000546, 0.000513, 0.000493, 0.00048, 0.000473, 0.000469, 0.000467,
|
|
0.000467, 0.000466, 0.000468, 0.000468, 0.000471, 0.000473, 0.000478, 0.000486, 0.000498, 0.000517, 0.000547,
|
|
0.000592, 0.00066, 0.000771, 0.000947, 0.001178],
|
|
}
|
|
|
|
# Data for Keramik
|
|
data_keramik = {
|
|
'Frequency': [10.0, 12.8, 16.4, 21.1, 27.0, 34.7, 44.5, 57.1, 73.3, 94.1, 120.7, 154.8, 198.7, 254.9, 327.0, 419.5,
|
|
538.2, 690.4, 885.7, 1136.3, 1457.7, 1870.1, 2399.1, 3077.7, 3948.4, 5065.3, 6498.1, 8336.3, 10694,
|
|
13719, 17600, 22579, 28966, 37160, 47672, 61157, 78457, 100600, 129100, 165600, 212500, 272600,
|
|
349700, 448600, 575500, 738400, 947200, 1215200, 1558900, 2000000],
|
|
|
|
'Cp': [9.337606e-07, 9.343870e-07, 9.334549e-07, 9.329069e-07,
|
|
9.323479e-07, 9.311796e-07, 9.305802e-07, 9.299153e-07,
|
|
9.292366e-07, 9.285809e-07, 9.278018e-07, 9.271119e-07,
|
|
9.264786e-07, 9.259473e-07, 9.256416e-07, 9.251245e-07,
|
|
9.246721e-07, 9.242606e-07, 9.238882e-07, 9.235746e-07,
|
|
9.232599e-07, 9.229495e-07, 9.226452e-07, 9.223339e-07,
|
|
9.220640e-07, 9.218148e-07, 9.214863e-07, 9.215784e-07,
|
|
9.212312e-07, 9.208448e-07, 9.204230e-07, 9.200688e-07,
|
|
9.195376e-07, 9.190440e-07, 9.185822e-07, 9.181618e-07,
|
|
9.180928e-07, 9.174063e-07, 9.168448e-07, 9.161407e-07,
|
|
9.154975e-07, 9.145927e-07, 9.137457e-07, 9.131353e-07,
|
|
9.128255e-07, 9.135270e-07, 9.207625e-07, -5.487440e-07,
|
|
-5.684640e-07, -4.134720e-07],
|
|
|
|
'Rp': [None, None, None, None, None, 0.9267592, 0.651835,
|
|
0.5315705, 0.4502702, 0.3803751, 0.3200941, 0.2503684,
|
|
0.2111238, 0.173803, 0.1398907, 0.1127589, 0.09407312,
|
|
0.07650648, 0.06299415, 0.04921066, 0.03831692, 0.03002577,
|
|
0.02366553, 0.0187392, 0.01508398, 0.01214105, 0.0091464,
|
|
0.006708373, 0.005069716, 0.003754666, 0.002787036,
|
|
0.002083809, 0.001492108, 0.001076167, 0.7722406,
|
|
0.5962365, 0.415347, 0.2967726, 0.2072099, 0.1469611,
|
|
0.1010326, 0.06896882, 0.04676412, 0.03097186, 0.02108662,
|
|
0.013847, 0.0083941, 0.1264634, 0.1215801, 0.1853224]
|
|
}
|
|
|
|
import pandas as pd
|
|
import matplotlib.pyplot as plt
|
|
|
|
def clean_data(df):
|
|
df.replace('INVALID', float('nan'), inplace=True)
|
|
df.dropna(inplace=True)
|
|
return df[df['Frequency'] <= 10**6] # Filter data for Frequency <= 10^6
|
|
|
|
# Assuming 'data_elektrolyt', 'data_folien', and 'data_keramik' are your data sources
|
|
df_elektrolyt = clean_data(pd.DataFrame(data_elektrolyt))
|
|
df_folien = clean_data(pd.DataFrame(data_folien))
|
|
# df_keramik = clean_data(pd.DataFrame(data_keramik)) # Not used anymore
|
|
|
|
# Plot for Cp
|
|
fig, ax1 = plt.subplots(figsize=(10, 6))
|
|
|
|
# Plot Cp for Elektrolyt and Folien on the left y-axis
|
|
ax1.plot(df_elektrolyt['Frequency'], df_elektrolyt['Cp'], label='Elektrolyt 100µF')
|
|
ax1.plot(df_folien['Frequency'], df_folien['Cp'], label='Folien 100µF')
|
|
ax1.set_xlabel('Frequenz f [ Hz]')
|
|
ax1.set_ylabel('Kapazität Cp [F]')
|
|
ax1.tick_params(axis='y')
|
|
plt.grid(True)
|
|
# Set logarithmic scale for x-axis
|
|
ax1.set_xscale('log')
|
|
|
|
# Limit x-axis to not exceed 10^6
|
|
ax1.set_xlim(right=10**6)
|
|
|
|
# Add title and legend
|
|
ax1.legend(loc='lower left')
|
|
|
|
plt.tight_layout()
|
|
plt.show()
|