Проблемы с отображением отрицательных значений на гистограмме в Matplotlib - PullRequest
0 голосов
/ 03 июня 2019

Я пытаюсь создать гистограмму с положительными и отрицательными значениями, используя Matplotlib, и испытываю трудности с отображением отрицательных значений на оси Y. Когда код выполняется, он будет правильно отображать все положительные значения (отмечены красным цветом), но отрицательные не отображаются вообще. Вместо этого я получаю дублирование положительных значений для строки, помеченной "y1". Пожалуйста, смотрите изображение 1 и мой код ниже.

Image 1

Код, который я использовал:

import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 
from matplotlib.pyplot import figure

data = pd.read_csv("C:\samplefile.csv")
fig = plt.figure()
figure(figsize = (22,3))
ax = plt.subplot(111)
x = data['Timing Event']
y = data['Diff Latency'].diff(periods = 1) > 0
y1 = data['Diff Latency'].diff(periods = 1) < 0
y_pos = np.arange(len(x))
plt.bar(y_pos, y, color=(1.0, 0, 0, 0.7))
plt.bar(y_pos, y1, color=(0, 0.6, 0, 0.7))

plt.tight_layout()
plt.show()

Набор данных имеет 2 столбца Timing Event в числах, например, (0,1,2,3 ....) и используется как индекс и «Diff Latency», который имеет как отрицательные, так и положительные значения. Образец набора данных прилагается ниже:

Timing Event    Diff Latency
     0               -4
     1                3
     2                1
     3               -1
     4                2

1 Ответ

1 голос
/ 03 июня 2019

Если вы просто хотите построить положительные и отрицательные значения на разных цветных полосах, вы можете напрямую использовать построение панд на основе показанного подхода здесь

import pandas as pd
import matplotlib.pyplot as plt 

fig, ax = plt.subplots()

data = pd.DataFrame({'Timing_Event':[0,1,2,3,4], 'Diff_Latency':[-4, 3, 1, -1, 2]})
data['sign'] = data['Diff_Latency'] > 0

data['Diff_Latency'].plot(kind='bar', color=data.sign.map({True: (1.0, 0, 0, 0.7), False: (0, 0.6, 0, 0.7)}), 
                      ax=ax)
ax.axhline(0, color='k')

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...