gpt4 book ai didi

python-3.x - 图中的 Axis 隐藏了 Axis 标签?

转载 作者:行者123 更新时间:2023-12-04 02:27:03 30 4
gpt4 key购买 nike

我正在尝试制作一个极坐标“sypder”图,但我在 Axis 标签方面遇到了一些问题。 xaxis 刻度标签似乎总是在 y Axis 网格下方的层上结束(字母被网格线覆盖,如下图所示),我希望它们在顶部。

我尝试设置 zorders 但没有成功。
如果我将绘制线的 zorder 设置为 2 以上,它们确实会在 Axis 和网格的顶部(就图层而言)......但我仍然希望标签在图的顶部可见。如果我将它们设置为 2 以下,则线条将位于网格下方。设置网格的 zorder 或刻度标签似乎没有效果。

这是我的尝试:如您所见,网格的红线位于文本“行业”的顶部,而网格的灰线则位于下方。我希望“行业”在线条和情节上都处于领先地位

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

data = random.sample(range(100), 5)
data[0] = 100
data[3] = 50
index = ['industry', 'residential', 'agriculture', 'transport', 'other']
df1 = pd.DataFrame(data, index=index, columns=['data'])
df2 = pd.DataFrame(np.array(data)/2, index=index, columns=['data'])

fig = plt.figure()

ax = fig.add_subplot(111, projection="polar")

ax.grid(True)
ax.yaxis.grid(color='r')
ax.xaxis.grid(color='#dddddd')

for spine in ax.spines.values():
spine.set_edgecolor('None')

theta = np.arange(len(df1))/float(len(df1))*2.*np.pi

l1, = ax.plot(theta, df1["data"], color="gold", marker="o", label=None, zorder=1) # , zorder = -3)
l2, = ax.plot(theta, df2["data"], color='tomato', marker="o", label=None, zorder=1.1) #, zorder =-2)

def _closeline(line):
x, y = line.get_data()
x = np.concatenate((x, [x[0]]))
y = np.concatenate((y, [y[0]]))
line.set_data(x, y)
[_closeline(l) for l in [l1, l2]]

ax.fill(theta, df1["data"], "gold", alpha=1, zorder=1)
ax.fill(theta, df2["data"], 'tomato', alpha=1, zorder=1.1)

ax.set_rlabel_position(216)
ax.set_xticks(theta)
ax.set_xticklabels(df2.index, fontsize=12)#, zorder=1)

legend = plt.legend(handles=[l1,l2], labels =['first','second'], loc='lower right')

plt.title("data [unit]", fontsize = 16, y = 1.2)


plt.savefig('atlas//trial2.png', bbox_inches='tight', dpi = 300)
plt.show()

Here is my attempt: as you can see the red lines of the grid end up on top of the text 'industry' while the gray line of the grid stays below. I would like 'industry' to be on top of both line and of the plots

最佳答案

好吧,这解决了我的问题,即使它不是一个好的答案。

在上面的脚本中,我替换了 ax.set_xticklabels(df2.index, fontsize=12)使用以下内容替换 Axis 标签的等效文本。

for it in np.arange(len(theta)):   
txt = ax.text(theta[it], maxy*1.1, index[it], va = 'center', ha = 'center', fontsize = 12)

ax.set_xticklabels('')

“标签”现在位于 Axis 和网格上方。

关于python-3.x - 图中的 Axis 隐藏了 Axis 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46242088/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com