Помечается на точечных графиках, если отображаются неожиданные значения - PullRequest
0 голосов
/ 31 мая 2018

У меня есть dataframe, вот так.Я хочу сделать scatter plots из этого.

enter image description here

Я хочу сделать scatter plots из Value1, но всякий раз, когда value2 уменьшается до значения ниже 0,6, я хочу отметить в этих scatter plots (Value1) до red color в противном случае default color в порядке.

Есть предложения?

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Для этого я использую инструмент semporn lmplot (расширенный график рассеяния).

Вы можете создать новый столбец в файле электронной таблицы с именем «Категория».Очень легко классифицировать переменные в Excel или OpenOffice

(это что-то вроде этого -> (if (cell_value <0.6 -> low), if (cell_value> 0.6 -> high)).)

Таким образом, ваши тестовые данные должны выглядеть следующим образом:

spreadsheet

Чем вы можете импортировать данные в Python (Iиспользовать Anaconda 3.5 с пауком: python 3.6) я сохранил файл в формате .txt.но возможен любой другой формат (.csv и т. д.)

#Import libraries
import seaborn as sns
import pandas as pd
import numpy as np
import os

#Open data.txt which is stored in a repository
os.chdir(r'C:\Users\DarthVader\Desktop\Graph')
f = open('data.txt')

#Get data in a list splitting by semicolon
data = []
for l in f:
    v = l.strip().split(';')
    data.append(v)
f.close()

#Convert list as dataframe for plot purposes
df = pd.DataFrame(data, columns = ['ID', 'Value', 'Value2','Category'])

#pop out first row with header
df2 = df.iloc[1:]

#Change variables to be plotted as numeric types
df2[['Value','Value2']] = df2[['Value','Value2']].apply(pd.to_numeric)

#Make plot with red color with values below 0.6 and green color with values above 0.6 
sns.lmplot( x="Value", y="Value2", data=df2, fit_reg=False, hue='Category', legend=False, palette=dict(high="#2ecc71", low="#e74c3c")) 

Ваш вывод должен выглядеть следующим образом.

Scatterplot

0 голосов
/ 31 мая 2018

Добавить еще один столбец с информацией о цвете:

import  matplotlib.cm as cm
df['color'] = [int(value < 0.6) for value in df.Value2]
df.plot.scatter(x=df.index, y='Value1',c='color',cmap=cm.jet)
...