python - 设置 pyplot 3D 阴影方向
问题描述
在 matplotlib bar3d() 中,有没有办法选择阴影落在哪个面上?
我想保留阴影以获得更好的视角,但是条形图的顶部总是有阴影的。这使得顶部的文本难以看到。
有没有办法改变阴影的位置,例如,交换阴影/非阴影区域?我检查了 LightSource 选项,但它似乎适用于颜色图,并且对于如何将它与 bar3d 一起使用并不直截了当。
感谢您的帮助。
解决方案
我还没有找到一个完整的解决方案,而是一种绕过它的方法。
基本上,您可以为每张脸分配颜色,然后猜测,您可以为要让阴影落在上面的脸分配较暗的颜色。
例如,这是用于分配颜色的原始向量,在 shade="True" 时,它给出了上图:
cs0=['lightgrey','w','#FF8000','w','#66CD00','w',
'w','lightgrey','w','#FF8000','w','#66CD00',
'#FF8000','w','lightgrey','w','#6495ED','w',
'w','#FF8000','w','lightgrey','w','#6495ED',
'#66CD00','w','#6495ED','w','lightgrey','w',
'w','#66CD00','w','#6495ED','w','lightgrey']
现在我必须将其更改为长度为 6 倍的向量,并且每行中的每 6 个元素描述 6 个面的 1 个条形(请参阅 doc)。特别是,我希望阴影从这个视角落在条的右侧,所以我可以只编辑三个相应的块,然后把它们放在一个向量中,看起来像:
cs1=['lightgrey','w','#FF8000','w','#66CD00','w',
'w','lightgrey','w','#FF8000','w','#66CD00',
'#FF8000','w','lightgrey','w','#6495ED','w',
'w','#FF8000','w','lightgrey','w','#6495ED',
'#66CD00','w','#6495ED','w','lightgrey','w',
'w','#66CD00','w','#6495ED','w','lightgrey']
#top
cs2=['lightgrey','w','#FF8000','w','#66CD00','w',
'w','lightgrey','w','#FF8000','w','#66CD00',
'#FF8000','w','lightgrey','w','#6495ED','w',
'w','#FF8000','w','lightgrey','w','#6495ED',
'#66CD00','w','#6495ED','w','lightgrey','w',
'w','#66CD00','w','#6495ED','w','lightgrey']
# left
cs3=['lightgrey','w','#FF8000','w','#66CD00','w',
'w','lightgrey','w','#FF8000','w','#66CD00',
'#FF8000','w','lightgrey','w','#6495ED','w',
'w','#FF8000','w','lightgrey','w','#6495ED',
'#66CD00','w','#6495ED','w','lightgrey','w',
'w','#66CD00','w','#6495ED','w','lightgrey']
cs4=['lightgrey','w','#FF8000','w','#66CD00','w',
'w','lightgrey','w','#FF8000','w','#66CD00',
'#FF8000','w','lightgrey','w','#6495ED','w',
'w','#FF8000','w','lightgrey','w','#6495ED',
'#66CD00','w','#6495ED','w','lightgrey','w',
'w','#66CD00','w','#6495ED','w','lightgrey']
cs5=['lightgrey','w','#FF8000','w','#66CD00','w',
'w','lightgrey','w','#FF8000','w','#66CD00',
'#FF8000','w','lightgrey','w','#6495ED','w',
'w','#FF8000','w','lightgrey','w','#6495ED',
'#66CD00','w','#6495ED','w','lightgrey','w',
'w','#66CD00','w','#6495ED','w','lightgrey']
# right
cs6=['grey','w','#CD3700','w','#458B00','w',
'w','grey','w','#CD3700','w','#458B00',
'#CD3700','w','grey','w','#104E8B','w',
'w','#CD3700','w','grey','w','#104E8B',
'#458B00','w','#104E8B','w','grey','w',
'w','#458B00','w','#104E8B','w','grey']
cs=cs0*6
cs[0::6]=cs1
cs[1::6]=cs2
cs[2::6]=cs3
cs[3::6]=cs4
cs[4::6]=cs5
cs[5::6]=cs6
推荐阅读
- html - 在 SVG 中创建没有文本标签的特定符号
- javascript - 无法正确包装元素锚标记
- icons - Netbeans 11.1 用 JDK13 看起来模糊和放大
- mongodb - Docker:如何知道 mongo 是否在 Alpine/node 中使用 shell 脚本文件运行
- python - Bash 脚本找不到 Python MySQL.Connector 模块
- javascript - 从跨域 iframe 接收数据
- android - 为什么当我输入回收站视图时回收站视图没有出现在活动页面中
- python - 如何将代理与我的代码合并(Instaloader python 模块)
- mysql - 如何根据另一个表的选择在表的列中插入值
- c# - 使用 ParallelTask 和 ConcurrentStack 使用单声道导致 Android 崩溃