简体   繁体   中英

How to correctly use a for loop for plotting multiple lines from a csv in python?

I am in the processing of learning Python (Basic question coming) and I have lots of data that comes out of some analyses as CSV files that look like the following:

示例数据表

I am trying to recreate the plot below (currently I do things like this in Excel and with the volume of data coming out and the complexity of the visualizations, I want to make things more efficient.

我正在尝试重新创建的情节

I tried to use the concept of For Loops to plot a line for each different "SectionName" in that column but am clearly missing something.

#read CSV
df=pd.read_csv('/Users/F/Documents/Data/LinesLoopTest.csv')

#Make Variables from dataframe columns
Value = df['Value']
Position = df['Xposition']
Section = df['SectionName']

#Setup Figure
fig = plt.figure(figsize=(6,3))
ax1 = fig.add_subplot(1,1,1)
ax1.set_title('Sections')
ax1.set_xlabel("XPosition")
ax1.set_ylabel("Value")

#plot lines by SectionName
for name in ['A', 'B', 'C']:
    plt.plot(Position, Value)

plt.show()

I realize this is a simple question, I just have not found an explanation so far where I can actually understand the process to the point that I can recreate it and then build on it.

You can use a groupby on the SectionName and then plot the groups

fig, ax = plt.subplots()

for section, group in df.groupby('SectionName'):
    group.plot(x='Xposition', y='Value', ax=ax, label=section)

在此处输入图像描述

I came late, so I did a pretty much a "copy/pastable" version of Sheldore's answer (His answer should me be approved)

import pandas as pd
import matplotlib.pyplot as plt 

# intialise data of lists. 
data = {'SectionName':['A','A','A', 'B','B','B', 'C','C','C'], 
        'Xpos':[1, 2, 3, 1, 2, 3, 1, 2, 3], 
        'Val':[0.2, 0.4, 0.5, 0.4, 1.3, 0.2, 1.2, 1.9, 1.8]} 

# Create DataFrame 
df = pd.DataFrame(data) 

fig, ax = plt.subplots()

for section, group in df.groupby('SectionName'):
    group.plot(x='Xpos', y='Val', ax=ax, label=section)
plt.show()

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM