You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Matplotlib/Mplfinance技术问询:如何修改子图中线与柱状图的颜色

解决Mplfinance子图单独设置样式的问题

我来帮你搞定这两个样式修改的需求,直接针对你提到的两个子图调整,不会影响整个图表的样式:

1. 修改「Tweets」折线图(标记A)的颜色

在创建df['count_s']对应的make_addplot时,直接添加color参数就能指定折线颜色,你可以用十六进制色值或者命名颜色(比如'darkorange')。修改后的代码片段如下:

mpf.make_addplot(
    df['count_s'], ax=ax2, ylabel='Tweets',
    color='#1f77b4'  # 这里替换成你想要的颜色
),

2. 修改「Sentiment」柱状图(标记B)的颜色,且正负值用不同颜色

要实现正负分色的柱状图,我们需要先根据sentiment列的数值生成一个颜色数组,再把这个数组传给make_addplotcolor参数。具体操作:

  • 遍历df['sentiment'],为正数、负数、零值分别指定不同颜色
  • 将生成的颜色数组传入柱状图的make_addplot

修改后的代码片段:

# 先生成情感值的颜色数组
sentiment_colors = []
for val in df['sentiment']:
    if val > 0:
        sentiment_colors.append('#2ca02c')  # 正数用绿色
    elif val < 0:
        sentiment_colors.append('#ff4136')  # 负数用红色
    else:
        sentiment_colors.append('#888888')  # 零值用灰色(可自定义)

# 创建情感柱状图的addplot
mpf.make_addplot(
    df['sentiment'], type='bar', ax=ax3, ylabel='Sentiment',
    color=sentiment_colors  # 传入颜色数组
),

完整修改后的代码整合

把上述修改整合到你的原函数中,aps部分的完整代码如下:

# 先生成情感值的颜色数组
sentiment_colors = []
for val in df['sentiment']:
    if val > 0:
        sentiment_colors.append('#2ca02c')
    elif val < 0:
        sentiment_colors.append('#ff4136')
    else:
        sentiment_colors.append('#888888')

# Create add plots
aps = [
    mpf.make_addplot(
        df['count_s'], ax=ax2, ylabel='Tweets',
        color='#1f77b4'  # 设置Tweets折线颜色
    ),
    mpf.make_addplot(
        df['sentiment'], type='bar', ax=ax3, ylabel='Sentiment',
        color=sentiment_colors  # 设置情感柱状图的分色
    )]

这样修改后,你就能单独控制这两个子图的样式,完全不会影响主K线图和成交量子图的原有样式。

内容的提问来源于stack exchange,提问作者cwfmoore

火山引擎 最新活动