如何修改Tableau里图例的位置
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何修改Tableau里图例的位置相关的知识,希望对你有一定的参考价值。
一、将图例Legend放于图表右侧1、设置chart的marginRight属性值
chart:
marginRight: 120
,
2、设置legend图例属性值如下
legend:
align: 'right', //水平方向位置
verticalAlign: 'top', //垂直方向位置
x: 0, //距离x轴的距离
y: 100 //距离Y轴的距离
,
二、将图例放于图表左上角
1、设置legend的属性
legend:
align: 'left', //水平方向位置
verticalAlign: 'top', //垂直方向位置
x: 0, //距离x轴的距离
y: 0 //距离Y轴的距离
,
三、将图例放于图表上方中央
1、设置legend属性如下
legend:
align: 'center', //水平方向位置
verticalAlign: 'top', //垂直方向位置
x: 0, //距离x轴的距离
y: 20 //距离Y轴的距离
,
四、将图例放于下方中央
1、设置legend属性如下
legend:
align: 'center', //水平方向位置
verticalAlign: 'bottom', //垂直方向位置
x: 0, //距离x轴的距离
y: 0 //距离Y轴的距离
, 参考技术A 把工作表放仪表板上,然后把图例改成浮动,就可以拖曳到图表上的任意位置
如想了解具体的信息,可参考帮助文档:设置仪表板大小和布局
如何替换 matplotlib 图例并保持相同的位置?
【中文标题】如何替换 matplotlib 图例并保持相同的位置?【英文标题】:How to replace matplotlib legend and keep same location? 【发布时间】:2017-09-02 03:49:50 【问题描述】:我想用一个新的图例替换一个 matplotlib 图例,但要保持被替换图例的相同(可能是任意的)位置。
为什么下面的代码不起作用?
将 matplotlib.pyplot 导入为 plt plt.plot(范围(10)) 斧头 = plt.gca() leg = plt.legend(['a'], loc='左下') bb = leg.get_bbox_to_anchor().inverse_transformed(ax.transAxes) plt.legend(['b'], bbox_to_anchor=bb)【问题讨论】:
【参考方案1】:回答问题中的代码为什么不起作用的问题:
图例的位置仅在绘制图形时在运行时确定。此外,未设置 bbox_to_anchor,因此它将是完整的轴 ((0,0,1,1)
)。
可以先绘制画布,再获取窗口范围
ax.figure.canvas.draw()
bb = leg.get_window_extent().inverse_transformed(ax.transAxes)
然而,这不会给你正确的位置(只是靠近它)。
现在一个可能的解决方案可能不是替换图例,而是只更新它的内容:
import matplotlib.pyplot as plt
plt.plot(range(10))
ax = plt.gca()
leg = plt.legend(['a'], loc='lower left')
leg.texts[0].set_text("b")
plt.show()
否则,如果更新不是一个选项,您将需要旧图例中的 bbox_to_anchor 和 loc 参数:
import matplotlib.pyplot as plt
plt.plot(range(10))
ax = plt.gca()
leg = plt.legend(['a'], loc='lower left', bbox_to_anchor=(0.5,0.5))
bb = leg.get_bbox_to_anchor().inverse_transformed(ax.transAxes)
plt.legend(['b'], bbox_to_anchor=bb, loc=leg._loc_real)
plt.show()
在模式已设置为“扩展”的情况下,这可能仍会失败。只有在使用相同的 fancybox 参数来创建新图例时,它也是准确的。
【讨论】:
更新内容就好了。但是,我认为不可能更新我需要的所有属性:fontsize、numpoints、scatterpoints、labelspacing、handletextpad、borderaxespad、borderpad、handlelength 和 fancybox。我认为其中一些只能通过创建时的 legend 命令访问。 有没有办法确定图例的锚定方式/位置?例如,图例的左下角锚定到轴的左下角。如果是这样,那么我可以设置loc='lower left'
...
我更新了答案。也许这更接近您的需要。
_loc_real
正是我所需要的!你知道_loc_real
和_loc
有什么区别吗?
一个比另一个更真实。 ;-) 不,老实说,我现在不知道。【参考方案2】:
除非我有误解,否则就这样做:
import matplotlib.pyplot as plt
plt.plot(range(10))
ax = plt.gca()
location = 'lower left'
while 1:
plt.legend(['a'], loc=location)
plt.pause(1)
plt.legend(['b'], loc=location)
plt.pause(1)
【讨论】:
我应该澄清原始图例位置未知,除了可能是任意的。例如,如果图形是从 pickle 文件加载的,就会发生这种情况。以上是关于如何修改Tableau里图例的位置的主要内容,如果未能解决你的问题,请参考以下文章
举个栗子!Tableau 技巧(205):区域地图中呈现具体位置
Tableau实战系列浏览 Tableau 环境 -重组工作区
Tableau实战系列浏览 Tableau 环境 -工作簿和工作表