回答
一个简单的方法来实现这一目标是确保每一个x值,y值之和为100
我假设你有一个数组举办的y值作为例子下面,即
y = np.array([[17, 19, 5, 16, 22, 20, 9, 31, 39, 8],
[46, 18, 37, 27, 29, 6, 5, 23, 22, 5],
[15, 46, 33, 36, 11, 13, 39, 17, 49, 17]])
要确保列总计100个,您必须通过其列求和的y
阵列划分,然后乘以100这使得y值跨度从0到100,使得y轴的“单位”为%。如果改为希望的y轴的值跨越的时间间隔从0到1,即使你不必在一个阵列如上组织的y值不通过100
乘,原则是一样的;由y值组成的每个阵列中的对应元素(例如y1
,y2
等)应该总计为100(或1)。
以下代码是链接到他的评论中的example @LogicalKnight的修改版本。
import numpy as np
from matplotlib import pyplot as plt
fnx = lambda : np.random.randint(5, 50, 10)
y = np.row_stack((fnx(), fnx(), fnx()))
x = np.arange(10)
# Make new array consisting of fractions of column-totals,
# using .astype(float) to avoid integer division
percent = y/y.sum(axis=0).astype(float) * 100
fig = plt.figure()
ax = fig.add_subplot(111)
ax.stackplot(x, percent)
ax.set_title('100 % stacked area chart')
ax.set_ylabel('Percent (%)')
ax.margins(0, 0) # Set margins to avoid "whitespace"
plt.show()
这给出如下所示的输出。
非常感谢您的帮助!我目前正在用mpl 1.2.1和numpy进行比较,以便首先绘制数据,并且没有时间再次查看这个问题。因此,我很高兴得到这段好的代码! 干杯托马斯 –
我试过这种制造STACK图表自己刚才和一个异常被抛出每次我打电话stackplot '回溯(最近最后一次通话)时间: 文件“
@Magic_Matt_Man你使用的是什么版本的Python和Matplotlib? – hooy
- 1. 为网站创建100%堆积面积图
- 2. 堆积面积图和在matplotlib
- 3. 创建堆积面积图上圈
- 4. HighCharts/Highstock如何构建100%堆积面积图
- 5. matplotlib中的100%堆积面积/直方图,日期在X轴上
- 6. NVD3堆积面积图
- 7. Matplotlib堆积的条形图
- 8. 100%堆积条形图
- 9. highcharts堆积面积
- 10. 如何在JavaFx中显示100%堆积面积图?
- 11. 图形异常堆积面积图ggplot2
- 12. 堆积条形图使用matplotlib
- 13. JFreeChart堆积面积图不连续
- 14. fillColor在面积图中堆积
- 15. R中的灰度堆积面积图
- 16. 堆积面积图中Plot.ly和R
- 17. 设置ylim与堆积面积图
- 18. 堆积面积直方图中的R
- 19. D3.js中的堆积面积图
- 20. 使用ggplot2创建堆积条形图
- 21. JavaFX面积图100%线
- 22. Matplotlib中的水平堆积条形图
- 23. 创建一个堆叠面积图或“堆叠”圈子情节
- 24. Highcharts:connectNulls ==假堆叠面积图
- 25. Highcharts堆叠面积图
- 26. 建立堆积面积图的免费JavaScript/jQuery库
- 27. 在matlab中创建堆积条形图
- 28. 创建堆积的Google图表?
- 29. 创建一个堆积列图
- 30. 在r中创建堆积条形图
这样如何[示例](http://matplotlib.org/examples/pylab_examples/stackplot_demo.html)? – 2013-06-01 17:56:58
你有试过什么吗?如果您主要使用代码,您通常会在SO上获得更好的响应。就目前而言,这个问题的内容是“请为我做我的工作”。 @LogicalKnight指出的例子是一个好的开始,并让你获得95%的成功。 – tacaswell