如何用条形图绘制 cumsum 百分比折线图?
How to draw a cumsum percent line-chart with a bar-chart?
我想画条形图,想用cumsum百分比求和,但我不知道怎么做。
我的示例代码
我要下面的情节
有人知道怎么做吗?
如果你把它们画在同一个轴上,你可以这样做:
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
x = ['a', 'b', 'c']
y = np.array([115, 400, 200])
plt.bar(x, y)
ratio = y/y.sum()*100
cumsumRatio = ratio.cumsum()
ax.plot(x, cumsumRatio, color='orange')
for xy in zip(x, cumsumRatio):
ax.annotate(f'({xy[1]:.2f}%)', xy=xy, textcoords='data')
或在单独的 y 轴上:
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax2 = ax.twinx()
x = ['a', 'b', 'c']
y = np.array([115, 400, 200])
ax.bar(x, y)
ratio = y/y.sum()*100
cumsumRatio = ratio.cumsum()
ax2.plot(x, cumsumRatio, color='orange')
for xy in zip(x, cumsumRatio):
ax2.annotate(f'({xy[1]:.2f}%)', xy=xy, textcoords='data')
我想画条形图,想用cumsum百分比求和,但我不知道怎么做。
我的示例代码
我要下面的情节
有人知道怎么做吗?
如果你把它们画在同一个轴上,你可以这样做:
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
x = ['a', 'b', 'c']
y = np.array([115, 400, 200])
plt.bar(x, y)
ratio = y/y.sum()*100
cumsumRatio = ratio.cumsum()
ax.plot(x, cumsumRatio, color='orange')
for xy in zip(x, cumsumRatio):
ax.annotate(f'({xy[1]:.2f}%)', xy=xy, textcoords='data')
或在单独的 y 轴上:
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax2 = ax.twinx()
x = ['a', 'b', 'c']
y = np.array([115, 400, 200])
ax.bar(x, y)
ratio = y/y.sum()*100
cumsumRatio = ratio.cumsum()
ax2.plot(x, cumsumRatio, color='orange')
for xy in zip(x, cumsumRatio):
ax2.annotate(f'({xy[1]:.2f}%)', xy=xy, textcoords='data')