Спасибо, это работает и очень хороший универсальный код. Для тех, кто хочет использовать его, только одна заметка, он отлично работает в matplotlib == 2.2.2, но не в matplotlib == 2.0.0 (ValueError: не удалось преобразовать строку в float: 'a'). Я не расследовал дальше, поэтому я не знаю, какая минимально необходимая версия.

ую несколько точек в морском заливе на одном графике. Ось X является порядковой, а не числовой; порядковые значения одинаковы для каждого точечного графика. Я хотел бы немного сместить каждый график в сторону, параметр wayplot (dodge = ...) делает это в пределах нескольких линий в пределах одного графика, но в этом случае для нескольких различных графиков, нарисованных друг над другом. Как я могу это сделать?

В идеале, я хотел бы, чтобы техника работала для любого сюжета matplotlib, а не только для морского побережья. Добавление смещения к данным не будет легко работать, так как данные не являются числовыми.

Пример, который показывает наложение графиков и затрудняет их чтение (уклонение внутри каждого графика работает нормально)

import pandas as pd
import seaborn as sns

df1 = pd.DataFrame({'x':list('ffffssss'), 'y':[1,2,3,4,5,6,7,8], 'h':list('abababab')})
df2 = df1.copy()
df2['y'] = df2['y']+0.5
sns.pointplot(data=df1, x='x', y='y', hue='h', ci='sd', errwidth=2, capsize=0.05, dodge=0.1, markers='<')
sns.pointplot(data=df2, x='x', y='y', hue='h', ci='sd', errwidth=2, capsize=0.05, dodge=0.1, markers='>')

Я мог бы использовать что-то кроме seaborn, но автоматические индикаторы достоверности / ошибок очень удобны, поэтому я бы предпочел придерживаться здесь.

Ответы на вопрос(1)

Ваш ответ на вопрос