作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在用 Python 构建一个可视化。
在那里,我想可视化燃料停止和我的汽车的燃料成本。此外,洗车及其成本以及维修都应该可视化。根据成本,燃料成本和洗衣成本应该有更高的标准。我创建了下面的可视化来描述这些概念。
如何使用 matplotlib 创建这样的可视化?
这是正在构建的可视化:
最佳答案
是的,使用 matplotlib 完全可以实现这种可视化。为了存储数据,numpy 数组通常非常方便。
以下是一些帮助您入门的代码:
import matplotlib.pyplot as plt
import numpy as np
refuel_km = np.array([0, 505.4, 1070, 1690])
refuel_cost = np.array([40.1, 50, 63, 55])
carwash_km = np.array([302.0, 605.4, 901, 1331, 1788.2])
carwash_cost = np.array([35.0, 40.0, 35.0, 35.0, 35.0])
repair_km = np.array([788.0, 1605.4])
repair_cost = np.array([135.0, 74.5])
fig, ax = plt.subplots(figsize=(12,3))
plt.scatter(refuel_km, np.full_like(refuel_km, 0), marker='o', s=100, color='lime', edgecolors='black', zorder=3, label='refuel')
plt.bar(refuel_km, refuel_cost, bottom=15, color='lime', ec='black', width=20, label='refuel cost')
plt.scatter(carwash_km, np.full_like(carwash_km, 0), marker='d', s=100, color='tomato', edgecolors='black', zorder=3, label='car wash')
plt.bar(carwash_km, -carwash_cost, bottom=-15, color='tomato', ec='black', width=20, label='car wash cost')
plt.scatter(repair_km, np.full_like(repair_km, 0), marker='^', s=100, color='lightblue', edgecolors='black', zorder=3, label='car repair')
#plt.bar(repair_km, -repair_cost, bottom=-15, color='lightblue', ec='black', width=20)
ax.spines['bottom'].set_position('zero')
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')
ax.spines['left'].set_color('none')
ax.tick_params(axis='x', length=20)
ax.set_yticks([]) # turn off the yticks
_, xmax = ax.get_xlim()
ymin, ymax = ax.get_ylim()
ax.set_xlim(-15, xmax)
ax.set_ylim(ymin, ymax+25) # make room for the legend
ax.text(xmax, -5, "km", ha='right', va='top', size=14)
plt.legend(ncol=5, loc='upper left')
plt.tight_layout()
plt.show()
关于python - 如何为时间线上的事件创建可视化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59944182/
我是一名优秀的程序员,十分优秀!