有没有办法调整 matplot 散点图中的注释?
目前,我很难在散点图中移动注释以获得更好的可读性。 这是我的代码:
for line in range(0, data_wald_nan.shape[0]):
fig.text(data_wald_nan.Wald_Schools_Per_Million.iloc[line] + 0.01, data_wald_nan.vaxx_rate.iloc[line],
data_wald_nan.country.iloc[line], horizontalalignment='left',
size='medium', color='black', weight='semibold')
我尝试使用调整文本,但这只是绘制了太多的红色箭头:
for x,y,s in zip(data_wald_nan[independend_variable], data_wald_nan["vaxx_rate"], data_wald_nan["country"]):
texts.append(plt.text(x, y, s))
adjust_text(texts, only_move={'points': 'y', 'texts': 'y'},
arrowprops=dict(arrowstyle="->", color='r', lw=0.5))
plt.show()
编辑:简约代码:
import scipy.stats
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
from adjustText import adjust_text
def scatter(independend_variable):
data = pd.read_csv("RQ1_final.csv")
data_wald_nan = pd.read_csv("RQ1_final.csv")
colors = np.arange((len(data_wald_nan["vaxx_rate"])))
print(data_wald_nan)
r = [scipy.stats.pearsonr(x=data_wald_nan["vaxx_rate"], y=data_wald_nan[independend_variable])]
print()
y = data_wald_nan["vaxx_rate"]
x = data_wald_nan[independend_variable]
fig = sns.scatterplot(data=data_wald_nan, y="vaxx_rate", x=independend_variable, c = colors)
fig.set_title( "Gross domestic product and \n vaccination rate "
"in countries \n (correlation-coefficient: " + str(r) +
")", weight="bold")
fig.set_ylabel("Vaccination Rate in %")
fig.set_xlabel("Gross domestic product")
for line in range(0, data_wald_nan.shape[0]):
fig.text(data_wald_nan.GDP.iloc[line] + 0.01, data_wald_nan.vaxx_rate.iloc[line],
data_wald_nan.country.iloc[line], horizontalalignment='left',
size='medium', color='black', weight='semibold')
adjust_text(fig.texts,only_move={'points': 'y', 'texts': 'y'}, arrowprops=dict(arrowstyle="->", color='r', lw=0.5))
fig.set_ylim(ymin=0, ymax=100)
fig.set_xlim(xmin=5000,xmax=100000)
plt.grid(visible=True, color="grey", linestyle="-", linewidth=0.5, alpha=0.2)
plt.show()
scatter("GDP")
Currently I struggle to move the annotations in a scatterplot for better readability.
This is my code:
for line in range(0, data_wald_nan.shape[0]):
fig.text(data_wald_nan.Wald_Schools_Per_Million.iloc[line] + 0.01, data_wald_nan.vaxx_rate.iloc[line],
data_wald_nan.country.iloc[line], horizontalalignment='left',
size='medium', color='black', weight='semibold')
I tried using adjust text but this just draws way too much red arrows:
for x,y,s in zip(data_wald_nan[independend_variable], data_wald_nan["vaxx_rate"], data_wald_nan["country"]):
texts.append(plt.text(x, y, s))
adjust_text(texts, only_move={'points': 'y', 'texts': 'y'},
arrowprops=dict(arrowstyle="->", color='r', lw=0.5))
plt.show()
And this the Output of Code 2:
EDIT: minimalistic code:
import scipy.stats
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
from adjustText import adjust_text
def scatter(independend_variable):
data = pd.read_csv("RQ1_final.csv")
data_wald_nan = pd.read_csv("RQ1_final.csv")
colors = np.arange((len(data_wald_nan["vaxx_rate"])))
print(data_wald_nan)
r = [scipy.stats.pearsonr(x=data_wald_nan["vaxx_rate"], y=data_wald_nan[independend_variable])]
print()
y = data_wald_nan["vaxx_rate"]
x = data_wald_nan[independend_variable]
fig = sns.scatterplot(data=data_wald_nan, y="vaxx_rate", x=independend_variable, c = colors)
fig.set_title( "Gross domestic product and \n vaccination rate "
"in countries \n (correlation-coefficient: " + str(r) +
")", weight="bold")
fig.set_ylabel("Vaccination Rate in %")
fig.set_xlabel("Gross domestic product")
for line in range(0, data_wald_nan.shape[0]):
fig.text(data_wald_nan.GDP.iloc[line] + 0.01, data_wald_nan.vaxx_rate.iloc[line],
data_wald_nan.country.iloc[line], horizontalalignment='left',
size='medium', color='black', weight='semibold')
adjust_text(fig.texts,only_move={'points': 'y', 'texts': 'y'}, arrowprops=dict(arrowstyle="->", color='r', lw=0.5))
fig.set_ylim(ymin=0, ymax=100)
fig.set_xlim(xmin=5000,xmax=100000)
plt.grid(visible=True, color="grey", linestyle="-", linewidth=0.5, alpha=0.2)
plt.show()
scatter("GDP")
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论