2024-04-26 18:59:09 发布
网友
我有以下数据框:
data = pd.DataFrame(data={'group': ['A', 'B', 'C'], 'start': [2, 5, 9], 'end': [9, 8, 6]})
我很想创建下面的图表,我到处都搜索过了 找不到答案:
图形
我到处都找过,在matplotlib网站上,在熊猫上, 我找不到一个简单的方法来完成它。你知道吗
您可以使用来自matplotlib.patches的Rectangle类 see here
matplotlib.patches
Rectangle
这应该让你开始:
import matplotlib.pyplot as plt from matplotlib.patches import Rectangle import numpy as np N_GROUPS = len(data) HEIGHT = 1 rectangles = [] yticks = np.linspace(HEIGHT, N_GROUPS * HEIGHT * 2, N_GROUPS) colors = ['g', 'r', 'b'] * (N_GROUPS // 3) for (_, row), y, c in zip(data.iterrows(), yticks, colors): rec = {'xy': (row.start, y - HEIGHT/2), 'width': row.end - row.start, 'height': 1, 'fill': False, 'color': c } rectangles.append(rec) for rec in rectangles: ax = plt.gca() p = Rectangle(**rec) ax.add_patch(p) plt.yticks(yticks, data['group']) plt.xlim([data['start'].min() - 1, data['end'].max() + 1]) plt.ylim([0, (N_GROUPS * HEIGHT * 2) + HEIGHT])
可以使用matplotlib^{}绘制水平条。你知道吗
import pandas as pd import matplotlib.pyplot as plt data = pd.DataFrame(data={'group': ['A', 'B', 'C'], 'start': [2, 5, 6], 'end': [9, 8, 9]}) plt.barh(data["group"], data["end"]-data["start"], 0.4, data["start"], color="None", edgecolor=["blue", "red", "green"]) plt.xlim(0,10) plt.show()
您可以使用来自
matplotlib.patches
的Rectangle
类 see here这应该让你开始:
可以使用matplotlib^{} 绘制水平条。你知道吗
相关问题 更多 >
编程相关推荐