我足够新来使python既危险又愚蠢。
我有以下代码,我想从计算机上的某个位置读取文本文件,在本例中为台式机。它可以绘制一个图,这还可以,但是我想更改x,y轴标签以及标题的颜色。我还想在x&y轴标签和图表轴之间添加一些空间,只是这样它才更具可读性。
我尝试了很多事情。。。什么都没有,而且我真的不知道为什么。有人可以看一下并提供一些见解吗?
谢谢
import matplotlib.pyplot as plt
filename = r"C:\Users\my_name\Desktop\my_text_file.txt"
with open(filename) as file:
entries = [x.split(",") for x in file.readlines()] # Read the text, splitting on comma.
entries = [(x[0], int(x[1])) for x in entries] # Turn the numbers into ints.
entries.sort(key=lambda x: x[1], reverse=True) # Sort by y-values.
x_coords = [x[0] for x in entries]
y_coords = [x[1] for x in entries]
plt.xticks(rotation=90)
plt.bar(x_coords, y_coords) # Draw a bar chart
plt.tight_layout() # Make room for the names at the bottom
# The next two lines adjust the space around the top, bottom, left & right around the plot
plt.plot()
plt.subplots_adjust(left=0.1, right=0.9, top=0.9, bottom=0.4)
plt.xlabel('The Names', fontsize=15)
plt.ylabel('Frequency of Visits', fontsize=12)
plt.title('Title', fontsize=15)
plt.subplots_adjust(top=0.85)
plt.show()
答案 0 :(得分:1)
plt.xlabel()
和plt.title()
接受一个color=...
参数来设置颜色。使用plt.xlabel(..., labelpad=10)
,您可以调整标签和刻度标签之间的填充。 labelpad
以points
进行度量,这与表示字体大小(例如12 point
字体)的单位相同。标题的相应填充简称为pad=
。
请注意,如果最后调用plt.tight_layout()
,则不必调用subplots_adjust
(它们的值会被plt.tight_layout()
覆盖)。
from matplotlib import pyplot as plt
import random
xcoords = ['Nigeria', 'Ethiopia', 'Egypt', 'DR Congo', 'Tanzania', 'South Africa', 'Kenya', 'Uganda',
'Algeria', 'Sudan', 'Morocco', 'Angola', 'Mozambique', 'Ghana', 'Madagascar']
ycoords = [random.randint(1, 10000) for _ in xcoords]
plt.bar(xcoords, ycoords)
plt.xticks(rotation=90)
plt.xlabel('The Names', fontsize=15, color='turquoise', labelpad=10)
plt.ylabel('Frequency of Visits', fontsize=12, color='limegreen', labelpad=15)
plt.title('Title', fontsize=15, color='purple')
plt.tight_layout()
plt.show()
PS:您还可以更改刻度标签的颜色,例如plt.xticks(rotation=90, color='crimson')
。
另外,tick_params()
可能有助于更改刻度的许多属性。