【发布时间】:2019-06-03 19:07:21
【问题描述】:
我正在尝试使用 Matplotlib 创建一个包含正值和负值的条形图,并且在将负值显示在 Y 轴上时遇到了困难。运行代码时,它将正确显示所有正值(以红色标记),但根本不显示负值。 相反,我得到了标记为“y1”的字符串的正值的重复。请参阅附图 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
【问题讨论】:
-
您的预期结果如何?
-
您好 gmds,预期结果看起来像所附图像(上面的图像 1 链接),但是绿色列应显示在轴的负侧。我可以在字符串 y 上生成负值,但颜色会是红色,最终用户无法从视觉上分辨出差异。
-
您绘制的不是负值而是布尔值。
plt.bar(y_pos, -1 * y1, color=(0, 0.6, 0, 0.7))是你想要的吗?
标签: python matplotlib