【问题标题】:change a charts border area color更改图表边框区域颜色
【发布时间】:2014-05-03 12:29:03
【问题描述】:

是否可以将图表之外的区域设置为黑色?我有图表 区域设置为黑色,但外部区域为灰色。如果它们不可见,我可以将其更改为黑色并可能将轴颜色设置为白色吗?

我做了一个这样的图表:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

test = pd.DataFrame(np.random.randn(100,3))

chart = test.cumsum().plot()
chart.set_axis_bgcolor('black')
plt.show()

【问题讨论】:

    标签: python matplotlib pandas


    【解决方案1】:

    另一个不如@Ffisegydd 的答案灵活但更简单的解决方案是您可以使用 pyplot 模块中预定义的样式“dark_background”来实现类似的效果。代码是:

    import pandas as pd
    import matplotlib.pyplot as plt
    import numpy as np
    
    # use style 'dark_background'
    plt.style.use('dark_background')
    test = pd.DataFrame(np.random.randn(100,3))
    
    chart = test.cumsum().plot()
    #chart.set_axis_bgcolor('black')
    
    plt.show()
    

    上面的代码产生。

    附言

    您可以运行plt.style.available 打印可用样式列表,并享受这些样式的乐趣。

    参考文献

    1. 请参阅here,了解有关如何使用样式或编写自定义样式等的详细说明...

    2. 有人做了一个webpage,显示了所有预定义样式的显示效果。太棒了!

    【讨论】:

      【解决方案2】:

      您所指的边框可以使用facecolor 属性进行修改。用您的代码修改它的最简单方法是使用:

      plt.gcf().set_facecolor('white') # Or any color
      

      如果您手动创建图形,您也可以使用关键字参数进行设置。

      import pandas as pd
      import matplotlib.pyplot as plt
      import numpy as np
      
      test = pd.DataFrame(np.random.randn(100,3))
      
      bkgd_color='black'
      text_color='white'
      
      fig = plt.figure(facecolor=bkgd_color)
      
      ax = fig.add_subplot(1, 1, 1)
      
      chart = test.cumsum().plot(ax=ax)
      chart.set_axis_bgcolor(bkgd_color)
      
      # Modify objects to set colour to text_color
      
      # Set the spines to be white.
      for spine in ax.spines:
          ax.spines[spine].set_color(text_color)
      
      # Set the ticks to be white
      for axis in ('x', 'y'):
          ax.tick_params(axis=axis, color=text_color)
      
      # Set the tick labels to be white
      for tl in ax.get_yticklabels():
          tl.set_color(text_color)
      for tl in ax.get_xticklabels():
          tl.set_color(text_color)
      
      leg = ax.legend(loc='best') # Get the legend object
      
      # Modify the legend text to be white
      for t in leg.get_texts():
          t.set_color(text_color)
      
      # Modify the legend to be black
      frame = leg.get_frame()
      frame.set_facecolor(bkgd_color)
      
      plt.show()
      

      【讨论】:

      • 我不明白您所说的“如果它们不可见,请将轴颜色设置为白色”是什么意思。当然这需要用户选择你如何决定什么是“可见的”?
      • 我的意思是现在我的两个背景都是黑色的,我看不到轴号。对不起,上面的评论不完整,我不小心输入了。
      • 所以您希望将面和轴颜色都设置为黑色,然后修改文本颜色使其可见?
      • 是的。这就是我要找的。​​span>
      • 我已经编辑了我的答案并包含了一个示例输出。答案现在转换所有绘图对象(刻度标签、图例等),以便它们在黑色背景下可见。
      猜你喜欢
      • 1970-01-01
      • 2015-09-03
      • 1970-01-01
      • 2012-10-01
      • 2017-03-05
      • 1970-01-01
      • 1970-01-01
      • 2018-01-26
      • 1970-01-01
      相关资源
      最近更新 更多