有没有办法在matplotlib中更改轴的颜色(而不是刻度线)?我一直在浏览Axes,Axis和Artist的文档,但没有运气; matplotlib画廊也没有提示.任何的想法?
这是这篇文章的一个后续问题,其中讨论了轴,刻度和标签的着色.我希望为此开一个新的,扩展的问题是可以的.
add_subplot使用轴[ax1,ax2] 围绕双图(通孔)更改完整框架(刻度线和轴)的颜色会产生大量代码.此代码段会更改上图的框架颜色:
ax1.spines['bottom'].set_color('green')
ax1.spines['top'].set_color('green')
ax1.spines['left'].set_color('green')
ax1.spines['right'].set_color('green')
for t in ax1.xaxis.get_ticklines(): t.set_color('green')
for t in ax1.yaxis.get_ticklines(): t.set_color('green')
for t in ax2.xaxis.get_ticklines(): t.set_color('green')
for t in ax2.yaxis.get_ticklines(): t.set_color('green')
Run Code Online (Sandbox Code Playgroud)
因此,为了改变两个图的帧颜色,每个两个y轴,我需要16(!)行代码...这是它的样子:

到目前为止我挖出的其他方法:
matplotlib.rc:这里讨论; 全球而非本地变化.我想要一些不同颜色的其他情节.请不要在情节中讨论太多颜色...... :-)
matplotlib.rc('axes',edgecolor='green')
Run Code Online (Sandbox Code Playgroud)挖出轴的刺,然后改变它:这里也讨论过 ; 我觉得并不是很优雅.
for child in ax.get_children():
if isinstance(child, matplotlib.spines.Spine):
child.set_color('#dddddd')
Run Code Online (Sandbox Code Playgroud)是否有一种优雅的方式来凝聚上面的块,更多的是"pythonic"?
我在ubuntu下使用python 2.6.5和matplotlib 0.99.1.1.
如果我有3D matplotlib图(Axes3D对象),如何更改刻度线的颜色?我想出了如何更改轴线,刻度标签和轴标签的颜色.显而易见的解决方案,使用ax.tick_params(axis='x', colors='red'),只更改刻度标签而不是刻度标记本身.
以下是尝试将所有轴更改为红色并获取除刻度标记之外的所有轴的代码:
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import pyplot as plt
fig = plt.figure()
ax = Axes3D(fig)
ax.scatter((0, 0, 1), (0, 1, 0), (1, 0, 0))
ax.w_xaxis.line.set_color('red')
ax.w_yaxis.line.set_color('red')
ax.w_zaxis.line.set_color('red')
ax.w_zaxis.line.set_color('red')
ax.xaxis.label.set_color('red')
ax.yaxis.label.set_color('red')
ax.zaxis.label.set_color('red')
ax.tick_params(axis='x', colors='red') # only affects
ax.tick_params(axis='y', colors='red') # tick labels
ax.tick_params(axis='z', colors='red') # not tick marks
fig.show()
Run Code Online (Sandbox Code Playgroud)
按照更改 matplotlib 中绘图的轴、刻度和标签的颜色的建议,我设法使用以下方法设置了图形的脊椎、标签、数字和刻度的颜色:
ax.spines['left'].set_color('#FF9000')
ax.yaxis.label.set_color('#FF9000')
ax.tick_params(axis='y', colors='#FF9000')
Run Code Online (Sandbox Code Playgroud)
但是,当我将图形的轴设置为对数刻度时,刻度再次恢复为黑色。
例如:
ax.set_yscale('log')
ax.spines['left'].set_color('#FF9000')
ax.yaxis.label.set_color('#FF9000')
ax.tick_params(axis='y', colors='#FF9000') <-- now only half works
Run Code Online (Sandbox Code Playgroud)
这将绘制我想要的颜色的数字(所以我知道该命令仍然可以执行某些操作)但不会影响刻度。
有没有办法设置对数刻度刻度的颜色?
我为以下数据框创建了一个使用两个不同 y 轴的条形图和一个折线图
.
import pandas as pd
df = pd.DataFrame({
'DXC':['T1', 'H1', 'HP', 'T1_or_H1_or_HP'],
'Count': [2485, 5595, 3091, 9933],
'percent':[1.06, 2.39, 1.31, 4.23]
})
Run Code Online (Sandbox Code Playgroud)
使用以下代码,我还可以在条形图中每个条形旁边显示值。但是,到目前为止,我还没有成功尝试显示线图的标签(百分比)值。
fig=plt.figure()
#AX: bar chart
ax=df["Count"].plot(kind="bar", color="orange")
ax.set_ylabel("Counts")
ax.set_xlabel("")
ax.set_ylim(0,20000)
for tick in ax.get_xticklabels():
tick.set_rotation(0)
#AX2: Create secondary y-axis with same x-axis as above for plotting percent values
ax2=ax.twinx()
ax2.plot(ax.get_xticks(),df["percent"], color="red", linewidth=4, marker = "o")
ax2.grid(False)
ax2.set_ylabel("Percent", color = "red")
ax2.set_ylim(0,4.5)
ax2.tick_params(labelcolor="red", axis='y')
Run Code Online (Sandbox Code Playgroud)
# Function to add value labels to bar chart
def add_value_labels(ax, spacing=5): …Run Code Online (Sandbox Code Playgroud)