python-3.x - 使用 Joyplot、FigureCanvasTkAgg 和 tkinter 时 x 轴标签的刻度重叠
问题描述
简而言之,我正在使用 python 中的 joypy 库绘制一个joyplot(ridgeplot)。
如您在上面看到的,我想制作两个图并将它们并排放置在一个 tkinter 框架(应用程序)中以进行可视化。我正在为这个问题苦苦挣扎大约三天;x 轴的刻度(以及图形的标题)一个图形与另一个图形重叠。我相信这是 plt.subplots 的问题(不是 tkinter 或 FigureCanvasTkAgg )。我在其他帖子中已经找到的代码部分周围加上了两个星号,以解决这个问题。我应该有两个并排的图像,它们的 x 轴应该从 0 到 70 开始。所以我使用以下代码:
子图准备:
axi = 0
plt.close('all')
fig, axes = plt.subplots(1, len(2,
**figsize=(7, 4)**, facecolor='w', squeeze=True,
edgecolor='k',**sharex=False,sharey=False**)
**fig.subplots_adjust(hspace=1, wspace=1)**
**fig.tight_layout()**
循环从这里开始(allints 是迭代器)并且数据帧被称为 plt_data_piv
for allints in [1,2]:
plt_data_piv = fp_data_concat[data[items] == allints ]
情节是使用joyplot创建的。ax=axes[axi] 在子图中输入每个图。除此之外,我还阅读了 figss 和 axess 中 joyplot 的输出,以限制和修改 joyplot 中的 x 轴,joyplot 本身就是一个子图。
figss, axess=joypy.joyplot(plt_data_piv,ax=axes[axi] ,
by='season', legend=True, alpha=0.6,
bins=len(fp_data_concat['agespect'].unique()),
column=plt_data_piv.columns[
2:len(plt_data_piv.columns)].tolist(),
labels=labels,
color=['blue', 'green', 'red', 'yellow',
'brown'],
grid="y", linewidth=1, figsize=(1, 1))
在这里,我使用 [-1] 来影响在 joyplot 中创建的子图中的最后一个无花果(但它与我正在创建的子图无关)
axess[-1].set_xticks(np.arange(0, 70 + 1, 5.0), minor=False)
axess[-1].tick_params(axis="both", labelsize=10)
axess[-1].axis(xmin=0, xmax=70)
# axess[axi].axis('off')
# axes[axi].set_xlim([0,70])
axi = axi + 1
在这里,我将每个无花果放在 FigureCanvasTkAgg 中。
canvas = FigureCanvasTkAgg(fig,
master=plt_frame) # A tk.DrawingArea.
canvas.draw()
plt_frame.update()
因为我正在处理私人数据,不幸的是,我无法共享它们以进行复制。对不起。
解决方案
推荐阅读
- android - 红米 Note 4 中的 ARCORE
- node.js - 如何使用 Chartjs + Nodejs + Express + Api 消耗在服务器端实时生成图表?
- c - char输入而不是int时的C无限循环
- python - IndexError: list out of range for [0] 尝试在 python 中抓取表
- c - Valgrind 和分配/释放内存的简单问题
- reactjs - 如何在 React Native 中的其他对象数组内的对象数组中添加值?
- c# - 如何在非活动类中使用 Xamarin.Firebase.Auth 并获得通知?
- java - Java 10 JavaFX java.lang.IllegalAccessError
- html - 将页脚保持在底部,但不固定
- mysql - 如何从查询中选择最后一个值?