- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
目前,我正在尝试绘制一个图表,显示某些正在运行的设备的等级,等级在几天内从 1 到 300(1 是最好的,300 是最差的)(df 列)。我正在尝试做的是类似于此的图表:
我想让线条像第一张图上那样倾斜而不是垂直,但我不知道该怎么做。我找到了关于这个问题的第一张图的基础 here然后我从那里开始编写代码,这就是我最终得到的:
import matplotlib.pyplot as plt
import matplotlib.ticker as plticker
import numpy as np
def energy_rank(data, marker_width=.5, color='blue'):
y_data = np.repeat(data, 2)
x_data = np.empty_like(y_data)
x_data[0::2] = np.arange(1, len(data)+1) - (marker_width/2)
x_data[1::2] = np.arange(1, len(data)+1) + (marker_width/2)
lines = []
lines.append(plt.Line2D(x_data, y_data, lw=0.8, linestyle='dashed', color=color,alpha=1,marker='.'))
for x in range(0,len(data)*2, 2):
lines.append(plt.Line2D(x_data[x:x+2], y_data[x:x+2], lw=2, linestyle='solid', color=color))
return lines
head = 8
dfPlot = vazio.sort_values(dia, ascending = True).head(head)
data = dfPlot.to_numpy()
colorsHEX=('#FE5815','#001A70','#2F5C22','#B01338','#00030D','#2DE1FC','#2E020C','#B81D8C')
artists = []
for row, color in zip(data, colorsHEX):
artists.extend(energy_rank(row, color=color))
eixoXDatas = pd.to_datetime(list(vazio.columns),format='%d/%m/%y').strftime('%d/%b')
fig, ax = plt.subplots()
plt.xticks(np.arange(len(vazio.columns)),
eixoXDatas,
rotation = 35,
fontsize = 14)
plt.yticks(fontsize = 14)
plt.xlabel('Dias', fontsize=18)
plt.ylabel('Ranking', fontsize=18)
fig = plt.gcf()
fig.set_size_inches(16, 8)
for artist in artists:
ax.add_artist(artist)
ax.set_ybound([0,15])
ax.set_ylim(ax.get_ylim()[::-1])
ax.set_xbound([-0.1,float(len(vazio.columns))+2.5])
plt.yticks(np.arange(1,16,step=1))
ax.grid(axis='y',alpha=0.5)
lastDay = vazio.sort_values(vazio.iloc[:,-1:].columns.values[0], ascending = True).iloc[:,-1:]
lastDay = lastDay.head(head)
for inverter, pos in lastDay.iterrows():
ax.annotate(inverter, xy =(plt.gca().get_xlim()[1]-2.4, pos), color=colorsHEX[int(pos)-1])
我尝试在 energy_rank
函数上实现,移除 x_data
上的 +/- 部分,但我最终只能得到带点的倾斜线而不是水平线。任何人都可以帮助我如何保持水平线而不是垂直虚线,如上例所示实现倾斜线?
我想这是垂直的,因为点在 x 刻度的顶部发生变化。如果您观察第一张图片,水平条集中在每个 x 刻度上,因此线条“有一些倾斜空间”。
vazio
dataframe如下(包含各装备的rank):
Equipment 21-03-27 21-03-28 21-03-29 21-03-30 21-03-31 21-04-01 21-04-02
P01-INV-1-1 1 1 1 1 1 2 2
P01-INV-1-2 2 2 4 4 5 1 1
P01-INV-1-3 4 4 3 5 6 10 10
最佳答案
这里是对 energy_rank
函数的改编,创建水平线段及其连接。画线部分灵感来自this tutorial example .可以选择填充线条下方的区域。
import matplotlib.pyplot as plt
from matplotlib.collections import LineCollection
import numpy as np
def energy_rank(data, marker_width=.5, color='blue', ax=None, fill=False):
ax = ax or plt.gca()
y = data
x = np.arange(1, len(data) + 1)
segments1 = np.array([x - marker_width / 2, y, x + marker_width / 2, y]).T.reshape(-1, 2, 2)
lc1 = LineCollection(segments1, color=color)
lc1.set_linewidth(2)
lc1.set_linestyle('-')
lines_hor = ax.add_collection(lc1)
segments2 = np.array([x[:-1] + marker_width / 2, y[:-1], x[1:] - marker_width / 2, y[1:]]).T.reshape(-1, 2, 2)
lc2 = LineCollection(segments2, color=color)
lc2.set_linewidth(0.5)
lc2.set_linestyle('--')
lines_connect = ax.add_collection(lc2)
if fill:
ax.fill_between(segments1.reshape(-1,2)[:,0], segments1.reshape(-1,2)[:,1],
color=color, alpha=0.05)
return lines_hor, lines_connect
fig, ax = plt.subplots()
M, N = 5, 25
y = np.random.uniform(-2, 2, (M, N)).cumsum(axis=1)
y += np.random.uniform(0.5, 2, (M, 1)) - y.min(axis=1, keepdims=True)
colorsHEX = ('#FE5815', '#001A70', '#2F5C22', '#B01338', '#00030D')
for yi, color in zip(y, colorsHEX):
energy_rank(yi, ax=ax, color=color)
ax.set_xlim(0, N + 1)
ax.set_ylim(0, y.max() + 1)
plt.show()
关于python - 排名线图定制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67074374/
我正在查看下面的示例代码, r element frequency and column name 并且想知道除了r中的排名和频率之外,是否有任何方法可以显示每列中每个元素的索引。因此,例如,所需的输
我有下表按 Id、Year DESC 排序 ID 年份有效 1 2011 1 1 2010 1 1 2009 0 1 2002 1 4 2013 1 4 2012 1 4 2011 1 等等。 我想要
鉴于此数据 Type Time Outcome Wanted Result 1 8:00 1 1 1 9:00 1 1 1 10:00 1 1 0
我正在寻找一种对两个句子进行排名/匹配的方法。 例如,取以下2个例句。 这是一个简短的句子。 这是一个包含很多单词的长句子。 我的新句子是这是一个句子。 我想将我的新句子与现有句子进行比较。我的新句子
我是 scikit 新手,我正在按照此处的示例 http://scikit-learn.org/stable/tutorial/text_analytics/working_with_text_dat
我有一张 table : r_user | r_points | -------------------- user1 | 12 | user2 | 124 | use
我需要获得顶级玩家、给定玩家的排名以及与该给定玩家排名相关的少数玩家。 为了更清楚地解释,下表是我想要的,它显示了得分最高的 3 名玩家、给定玩家的排名 (id=11) 以及得分略高于和低于该给定玩家
我正在尝试创建一个排名(排名)查询。 我使用表users、schedule 和picks来计算排名。然而,这样做的缺陷是,如果用户未提交任何选择,则该用户将不会出现在排名中。 下面的查询返回所有已提交
这个问题已经有答案了: 已关闭10 年前。 Possible Duplicate: High score system from my iphone game 我的查询是: $sql = "SELEC
我有一个玩家表和MatchUps表。 MatchUps 表具有一个 winner_id 列和一个 loser_id 列。我可以根据一次查询的胜率获得排名/排名吗?如果我能为每个玩家返回这样的东西,那就
我正在尝试创建一个排名/阶梯系统,其中排名最高的氏族 (1) 应位于顶部,排名为 2 的氏族应位于顶部,依此类推。但我无法让它工作......我尝试了不同的方法: PHP: $sql = mysql_
我需要一份游戏中排名最高的玩家列表。排名是即时计算的,数据取自两个表。我设法以正确的方式对它们进行排序,但是@rank:=0 -> @rank:=@rank+1 技巧,其中一个名为 rank 的附加字
下周末我们将进行一场包含 3 项资格赛(半决赛和决赛)的比赛。只有最好的 15 名参赛者才能参加半决赛。只有最好的 6 人才能参加总决赛。 在资格考试中,每项资格考试的分数从 0 到 100 不等 我
我正在尝试找出对我的产品进行加权的最佳方式,以及它们应该以何种顺序出现在主页等地方。 我想处理四个指标并将其转化为排名: 购买产品 产品有多久了(以天为单位) 产品被保存了多少次 产品被浏览了多少次
使用 @N=@N + 1 的经典技巧来获取某些有序列上的项目排名。现在在订购之前,我需要通过将它与其他表内部连接来从基表中过滤掉一些值。所以查询看起来像这样 -: SET @N=0; SELECT
我需要一些帮助来处理在 MySQL 中排名时的关系。例如: 播放器 |积分 玛丽:90 鲍勃:90 吉姆:65 凯文:12 Bob 和 Mary 应该都排名第一。吉姆应该是#3。凯文应该是#4。 My
我正在寻找一种算法,该算法可以为我提供具有特定强度的下一个排列。长度为 n 的排列由元素 (1,2,3,...n) 定义 排列的强度是多少? 长度为 10 的排列的强度定义为 |a1-a2|+|a2-
我正在编写一个具有信誉组件的电子商务引擎。我希望用户能够对项目进行评论和评分,并能够对评论进行评分。 用于根据“最佳”评论对项目进行排序的最佳算法是什么?它必须根据给出最佳评论的人获得的质量评论数量进
我有一个按游戏结果填满游戏的数据库表,想知道我是否可以计算以下内容: GP(玩过的游戏) 获胜 失败 积分(每胜2分,每负1分) 这是我的表结构: CREATE TABLE `results` (
我有一个 users 表,其中有一列名为 money_sent。我想按 money_sent 降序排列此表,然后找出特定用户的“排名”。 例如,只有 111 人比用户 12392 花费更多的钱,因此他
我是一名优秀的程序员,十分优秀!