Ich habe die folgende Entwicklung, an der ich mit ElementTree-, Pandas- und Matplotlib-Modulen in Python arbeite:
import xml.etree.ElementTree as ET
import pandas as pd
from matplotlib import pyplot as plt
file_xml = ET.parse('Audio_Setting_[SyncG3].xml')
rootXML = file_xml.getroot()
def transfor_data_atri(rootXML):
file_xml = ET.parse(rootXML)
data_XML = [
{"Name": signal.attrib["Name"],
"Value": int(signal.attrib["Value"].split(' ')[0])
} for signal in file_xml.findall(".//Signal")
]
signals_df = pd.DataFrame(data_XML)
extract_name_value(signals_df)
def extract_name_value(signals_df):
#print(signals_df)
names_list = [name for name in signals_df['Name'].unique()]
num_names_list = len(names_list)
colors = ['b', 'g', 'r', 'c', 'm', 'y', 'k']
# Creation Graphic
fig = plt.figure(figsize=(18, 20))
plt.suptitle(f'File PXML: {rootXML}', fontsize=20, fontweight='bold', color='SteelBlue', position=(0.75, 0.90))
fig.tight_layout()
i = 1
for name in names_list:
# get data
data = signals_df[signals_df["Name"] == name]["Value"]
datax = signals_df["Name"]
# x = [n for n in range(len(data))]
x = [n for n in range(len(datax))]
print(x)
# get color
j = random.randint(0, len(colors) - 1)
# add subplots
ax = plt.subplot(num_names_list, 1, i)
ax.plot(x, data, drawstyle='steps', marker='o', color=colors[j], linewidth=3)
# plt.xticks(None)
ax.set_ylabel(name, fontsize=12, fontweight='bold', color='SteelBlue', rotation=50, labelpad=45)
ax.grid(alpha=0.4)
i += 1
plt.show()
Ich habe nach dem Fehler gesucht und verstehe vollkommen, dass die Abmessungen von x und y gleich sein müssen, aber es besteht die Möglichkeit, ein Diagramm zu erstellen, bei dem die x-Achse größer als die y-Achse ist? und auch die x-Achse kommt von einer Variablen, die nichts mit der y-Achse zu tun hat? wie wäre das?
Das heißt, das Diagramm, das ich erreichen muss, sieht wie folgt aus (ich weiß, dass es noch nicht fertig ist und ich komme Schritt für Schritt näher):
Wobei die x-Achse die Anzahl aller Werte ist, die sie im Signal-Element der XML-Datei hat: Ich habe sie hier eingefügt , weil sie so umfangreich ist und dieser Wert größer als die y-Achse ist, aber wie man die 3 . betrachtet Werte, die ich aus der XML bringe, sind Singal Name, Signal Value als y-Achse und Count of Signals als x-Achse. Ich freue mich sehr über Ihre Kommentare und Hilfe.
IIUC, Sie versuchen, mehrere abgestufte Werte gegen ihre Reihenfolge oder ihr Aussehen (X-Index) in einer XML-Datei darzustellen. Dann sollten Sie gegen die X-Werte des ursprünglichen Datenrahmens zeichnen. Ich habe Ihren Code nicht viel für Stil oder ähnliches geändert, nur ein wenig korrigiert.
import xml.etree.ElementTree as ET
import pandas as pd
from matplotlib import pyplot as plt
import random
file_xml = 'example_un_child4.xml'
def transfor_data_atri(rootXML):
file_xml = ET.parse(rootXML)
data_XML = [
{"Name": signal.attrib["Name"],
"Value": int(signal.attrib["Value"].split(' ')[0])
} for signal in file_xml.findall(".//Signal")
]
signals_df = pd.DataFrame(data_XML)
extract_name_value(signals_df)
def extract_name_value(signals_df):
#print(signals_df)
names_list = [name for name in signals_df['Name'].unique()]
num_names_list = len(names_list)
colors = ['b', 'g', 'r', 'c', 'm', 'y', 'k']
# Creation Graphic
#fig = plt.figure(figsize=(18, 20), sharex=True)
fig, ax = plt.subplots(nrows=num_names_list, figsize=(10, 15), sharex=True)
plt.suptitle(f'File PXML: {file_xml}', fontsize=20, fontweight='bold', color='SteelBlue', position=(0.75, 0.90))
#fig.tight_layout()
i = 1
for pos, name in enumerate(names_list):
# get data
data = signals_df[signals_df["Name"] == name]["Value"]
datax = signals_df["Name"]
# x = [n for n in range(len(data))]
#x = [n for n in range(len(datax))]
#print(x)
# get color
j = random.randint(0, len(colors) - 1)
# add subplots
#ax[pos] = plt.subplot(num_names_list, 1, i)
ax[pos].plot(data.index, data, drawstyle='steps', marker='o', color=colors[j], linewidth=3)
# plt.xticks(None)
ax[pos].set_ylabel(name, fontsize=12, fontweight='bold', color='SteelBlue', rotation=50, labelpad=45)
ax[pos].grid(alpha=0.4)
i += 1
fig.tight_layout()
plt.show()
transfor_data_atri(file_xml)
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen