Ihre Daten scheint nicht Leitfähigkeitsdaten zu haben. Um Brüche zu kennzeichnen, iteriere ich im Grunde genommen über Brüche und füge Etiketten einzeln hinzu. Hier ist, was ich habe:
import pandas as pd
import matplotlib.pyplot as plt
se_abs_data = pd.read_excel('se.xls', header=0, index_col=0, parse_cols=[0, 1])
se_tube_label = pd.read_excel('se.xls', header=0, index_col=0, parse_cols=[2, 3]).dropna()
# Make a wider figure so that fraction labels are visible.
fig_size = plt.figure().get_size_inches()
fig_size[0] = fig_size[0] * 2
plt.figure(figsize=fig_size)
plt.plot(se_abs_data)
# Find y position for fraction labels
[_, _, ymin, ymax] = plt.axis()
y_tube_label = ymin + (ymax - ymin) * 0.03
# Add fraction labels one by one
for fraction, label in se_tube_label.iterrows():
plt.text(fraction, y_tube_label, label[0], rotation='vertical', verticalalignment='bottom')
plt.axvline(fraction, ymax=0.1, color='r')
plt.xlabel('Elution volume (ml)')
plt.ylabel('Absorbance (mAu)')
plt.minorticks_on()
plt.legend(['UV1 280nm'], frameon=False)
# plt.savefig('test.png')
plt.show()
Hier ist die Figur:
Edit:
Hier ist für 2 y-Achse:
import pandas as pd
import matplotlib.pyplot as plt
se_abs_data = pd.read_excel('se.xls', header=0, index_col=0, parse_cols=[0, 1])
se_temp_data = pd.read_excel('se.xls', header=0, index_col=0, parse_cols=[4, 5])
se_tube_label = pd.read_excel('se.xls', header=0, index_col=0, parse_cols=[2, 3]).dropna()
# Make a wider figure so that fraction labels are visible.
fig, ax_abs = plt.subplots()
fig_size = fig.get_size_inches()
fig_size[0] = fig_size[0] * 2
fig.set_size_inches(fig_size)
line_abs, = ax_abs.plot(se_abs_data, color='b')
ax_abs.axis([0, 350, -500, 2500])
ax_temp = ax_abs.twinx()
line_temp, = ax_temp.plot(se_temp_data, color='r')
ax_temp.axis([0, 350, 17.8, 19.6])
# Find y position for fraction labels
[_, _, ymin, ymax] = ax_abs.axis()
y_tube_label = ymin + (ymax - ymin) * 0.03
# Add fraction labels one by one
for fraction, label in se_tube_label.iterrows():
ax_abs.text(fraction, y_tube_label, label[0], rotation='vertical', verticalalignment='bottom')
ax_abs.axvline(fraction, ymax=0.1, color='r')
plt.minorticks_on()
plt.xlabel('Elution volume (ml)')
ax_abs.set_ylabel('Absorbance (mAu)')
ax_temp.set_ylabel('Temperature (°C)')
plt.legend((line_abs, line_temp), ('UV1 280nm', 'Temp °C'), frameon=False)
fig.tight_layout()
# plt.savefig('test.png')
plt.show()
Hier ist die Figur :
Wie erwähnt in matplotlib's How-To: "mehr als zwei Skalen werden derzeit nicht unterstützt, obwohl es auf der Wunschliste ist".
Wenn ich den Code mit der Datei ausführen ich: Python se.py Traceback (jüngste Aufforderung zuletzt): File "se.py", Zeile 40, in plt.plot (se) NameError: Name 'se' ist nicht definiert –
Ziprip
@Ziprip Sorry, mein Fehler. Aktualisieren Sie es auf 'se_abs_data' und entfernen Sie einen nicht verwendeten Import. Könnten Sie es bitte noch einmal versuchen? –
Begann zu arbeiten, ich habe jetzt die Grafik, aber das Problem ist, dass die Brüche mit der tatsächlichen Grafik überlappen. Hier ist die Ausgabe: https://www.dropbox.com/s/f2yffbhzyb7id8d/Screenshot%202017-05-26%2013.42.07.png?dl=0 auch, ich möchte Temp und Druck zu der gleichen Grafik hinzufügen und Ich habe die XLS-Datei mit Temp- und Pressure-Werten aktualisiert. Hinweis: Die Datenpunkte für Temp und Pressure sind wieder unterschiedlich. Wie kann ich das plotten? – Ziprip