- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试绘制一条线,该线应该以代表图表趋势的方式着色。例如,如果它正在增加,它应该是绿色的,而如果它正在减少,它应该是红色的。
我可以简单地使用移动的数据框来表示这种趋势绘图点:
dates = ['2018-01-{}'.format(d) for d in range(1, 32)]
vals = [1, 2, 3, 4, 6, 9, 12, 11, 10, 8, 4, 10, 15, 17, 17, 18, 18, 17, 16, 19, 22, 23, 23, 25, 28, 33, 30, 25, 24,
20, 18]
df = pd.DataFrame(data=vals, columns=['Value'])
df.set_index(pd.to_datetime(dates), inplace=True)
df_shifted = df.shift()
df_shifted.iloc[0] = df_shifted.iloc[1]
mask_inc = df >= df_shifted
df['Increase'] = mask_inc['Value']
fig, ax = plt.subplots()
ax.plot(df['Value'], color='#ededed')
color = {True: 'green', False: 'red'}
for index, row in df.iterrows():
ax.plot(index, row['Value'], 'o', color=color[row['Increase']])
我知道 matplotlib 不允许在同一条线图中使用不同的颜色,但是否有任何解决方法而不会使它变得非常复杂?
我考虑过使用 Increase mask 绘制两个不同的数据帧,但问题是该线会被连续绘制,因此所有点都会连接起来,而我需要将它分成由线段组成的不同部分。
最佳答案
可以关注this tutorial实现你想要的。
然后您可以使用以下代码:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.collections import LineCollection
from matplotlib.colors import ListedColormap, BoundaryNorm
import datetime
max_range = 32
dates = ['2018-01-{}'.format(d) for d in range(1, max_range)]
x = np.asarray(range(1,max_range))
y = [1, 2, 3, 4, 6, 9, 12, 11, 10, 8, 4, 10, 15, 17, 17, 18, 18, 17, 16, 19, 22, 23, 23, 25, 28, 33, 30, 25, 24,
20, 18]
y = np.asarray(y)
z = [i - j for i, j in zip(y[:-1], y[1:])]
z = np.asarray(z)
# Create a colormap for red, green and blue and a norm to color
# f' < -0.5 red, f' > 0.5 blue, and the rest green
cmap = ListedColormap(['g', 'b', 'r'])
norm = BoundaryNorm([-100, -0.5, 0.5, 100], cmap.N)
# Create a set of line segments so that we can color them individually
# This creates the points as a N x 1 x 2 array so that we can stack points
# together easily to get the segments. The segments array for line collection
# needs to be numlines x points per line x 2 (x and y)
points = np.array([x, y]).T.reshape(-1, 1, 2)
segments = np.concatenate([points[:-1], points[1:]], axis=1)
# Create the line collection object, setting the colormapping parameters.
# Have to set the actual values used for colormapping separately.
lc = LineCollection(segments, cmap=cmap, norm=norm)
lc.set_array(z)
lc.set_linewidth(3)
fig1 = plt.figure()
plt.gca().add_collection(lc)
plt.xlim(0,max_range-1)
plt.ylim(min(y), max(y))
plt.xticks(x,dates, rotation='vertical')
plt.tight_layout()
plt.show()
关于python - 线条颜色取决于趋势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48232834/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 4 年前。 Improve
我有一个名为 LOGENTRY 的简单表,其中包含名为“DATE”和“COST”的字段。示例: +--------------+-------+ | DATE | COST | +-
我有一个每小时运行一次的 cron 作业。 cron 作业向表 'update' 添加一条记录 table - 'update' update_id (primary) timestamp 和 将我网
我正在使用 Bokeh 制作趋势图,显示概念的流行程度如何随时间变化。我使用了 brewer 示例 ( https://docs.bokeh.org/en/latest/docs/gallery/st
所以我想做的是制作一个趋势算法,我需要有关 SQL 代码的帮助,因为我无法让它运行。 该算法包含三个方面:(我对更好的趋势算法的想法完全开放) 1.Plays during 24h / Total p
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
开发 Twitter Connect 应用程序并通过 URL 获取趋势: https://api.twitter.com/1.1/trends/closest.json?lat=42&long=36
我对时间序列异常检测非常陌生,所以我的问题对你们中的一些人来说可能是显而易见的。今天,我使用 lstm 和聚类技术来检测时间序列上的异常,但这些方法无法识别随着时间的推移慢慢恶化的异常(我认为这称为趋
我正在寻求[博客]的帮助:http://www.androidhive.info/2012/01/android-json-parsing-tutorial/解析 twitter 趋势 JSON 文件
我有一个网站,人们可以在其中添加他们喜欢的电视节目。 我想要一些趋势统计数据。示例: (1 个不变)生活大爆炸 (上周第 3 次)老爸老妈浪漫史 (上周第 2 个)房子 (上周第 30 位,上涨 40
我有一个带有 DatetimeIndex 和 ohlcv 股票报价列的 pandas Dataframe。我想提取满足特定阈值的价格波动/趋势:大于 0.3 美元的上升趋势/趋势和超过 -0.3 美元
尝试仅访问多伦多趋势的“名称”部分。到目前为止我有这个但是它给我错误: toronto = t.get_place_trends(id=4118) trend_array = [] for trend
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我尝试在我的网络应用程序中实现 Google 趋势。这是我的代码: using (var client = new WebClient()) { var us
我最近将 Junit 和 Emma 集成到 CruiseControl (CC) 中,因此它可以为每个构建创建漂亮的报告。我想根据 Emma 提供的一些信息(例如覆盖率百分比数字和摘要)查看一些趋势图
我正在尝试将谷歌趋势嵌入到我的代码 vuejs 中,但我找不到任何关于如何做到这一点的信息。 我尝试一下: export default { created(){ posts
我对此有点新手...基本上我需要运行一个脚本来从谷歌趋势下载.csv 文件。我按照这个reference写了下面的代码,代码如下: HttpClient client = new Defau
我正在使用非官方 Google Trends API ( https://github.com/GeneralMills/pytrends#trend ) 编写代码,但是在几乎 10 个请求之后,我收
我一直使用破折号作为 css 类和 ID 名称的分隔符: .about-us .car-pricing-guide 我见过网站使用多个下划线 __ .home__content 此外,我还看到了 2
很抱歉提出这个问题,但我已经在这个问题上停留了一段时间。 基本上我正在尝试列出一个列表: numbers=[1, 2, -1, -2, 4, 5] 并将此列表子集化为显示正/负运动(或趋势)的列表列表
我是一名优秀的程序员,十分优秀!