如何解决如何使用 Python 或 PowerBI 中的给定数据集制作以下图表
我对 Python 有一些基本的了解,刚开始学习用 Python 绘图。
这是我拥有的示例数据集:
项目 | 起点 | 终点 | 类型 | 价值 |
---|---|---|---|---|
A | 800 | 1000 | 1 | 10 |
A | 700 | 815 | 2 | 20 |
A | 850 | 900 | 2 | 40 |
A | 900 | 990 | 2 | 30 |
图表应如下所示:
因此,它读取 min[start point]
和 max[end point]
以设置 ymin
和 ymax
。
以第一行为例,它在y= 800
处画一条线,值为10
,在y = 1000
处画另一条线,然后根据类型(不同类型会填充不同颜色)
另一个例子,第二行在y = 700
处绘制一条线,值为20
,在y = 815
处绘制另一条线,然后用不同的颜色填充两条线之间的间隙(因为类型不同)。
这有可能吗?任何帮助都感激不尽!提前感谢所有的好意。
解决方法
既然您向我保证需要重叠,您可能希望降低 alpha 值,以便更好地看到重叠。如果不需要,请删除 alpha 选项 - 在这种情况下,标准值 1 将用于绘图。如果顺序很重要,您可以在 order
列表中指定它并相应地对您的 df
进行排序,以便最后绘制此列表中的第一个条目:
import matplotlib.pyplot as plt
import pandas as pd
df = pd.DataFrame({"StartPoint": [800,700,850,900],"EndPoint": [1000,815,900,990],"Type": [1,2,3,2],"Value": [10,20,40,30]})
color_dic = {1: "tab:red",2: "tab:blue",3: "tab:orange"}
order = [1,2]
df["order"] = pd.Categorical(df["Type"],order)
df = df.sort_values("order",ascending=False)
plt.bar(x=df.Value/2,height=df.EndPoint-df.StartPoint,width=df.Value,bottom=df.StartPoint,color=[color_dic[i] for i in df.Type],alpha=0.7)
plt.gca().invert_yaxis()
plt.show()
示例输出:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。